よく使用されるデータベースである MySQL では、多くの操作が必要です。デジタル操作には非常に便利です。このセクションでは、参考としていくつかの統計事例を紹介します。 注文テーブルの例: テーブル `yyd_order` を作成します ( `id` bigint(20) 符号なし NOT NULL AUTO_INCREMENT, `user_id` int(11) NULLではない、 `order_nid` varchar(50) NOT NULL, `status` varchar(50) NOT NULL デフォルト '0', `money` 小数点(20,2) NOT NULL デフォルト '0.00', `create_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP、 主キー (`id`)、 キー `userid` (`user_id`), キー `createtime` (`create_time`)、 キー `updatetime` (`update_time`) )ENGINE=InnoDB; 1. 日、日付形式別に受注数をカウントする SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d') t_date, COUNT(1) t_count FROM t_order t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d'); 2. 時間ごとに受注数をカウントする SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H') t_hour, COUNT(1) t_count FROM t_order t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H'); 3. 昨日と比較した注文量の比較、時間順、日付順 DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H') t_date, COUNT(1) t_count FROM yyd_order t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H') を選択 DATE_FORMAT(t.`create_time`, '%H'),DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H'); で並べ替えます。 4. 先週の同じ時間と比較して、受注、日付、順序 DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H') t_date, COUNT(1) t_count FROM yyd_order t WHERE を選択 DATE_FORMAT(t.`create_time`,'%Y-%m-%d') IN ('2018-05-03','2018-05-11') GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H') DATE_FORMAT(t.`create_time`, '%H'),DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H'); で並べ替えます。 5. 返された値をコメントフィールドでカウントし、コメントごとにグループ化します... DATE_FORMAT(t.`create_time`, '%Y-%m-%d') t_date, COUNT(1) t_count, SUBSTRING_INDEX(SUBSTRING_INDEX(t.`msg`, '{', -1), '}', 1) t_rsp_msg から選択します cmoo_tab t WHERE t.`create_time` > '2018-05-17' AND t.`rsp_msg` LIKE '%nextProcessCode%C9000%' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d'),SUBSTRING_INDEX(SUBSTRING_INDEX(t.`rsp_msg`, '{', -1), '}', 1); 6. 1時間ごとに各金額の間隔を数え、1 0の場合は合計し、それぞれを数えます。 SELECT DATE_FORMAT(t.create_time,'%Y-%m-%d') t_date, SUM(IF(t.`amount`>0 AND t.`amount`<1000, 1, 0)) t_0_1000, SUM(IF(t.`amount`>1000 AND t.`amount`<5000, 1, 0)) t_1_5000, SUM(IF(t.`amount`>5000, 1, 0)) t_5000m FROM mobp2p.`yyd_order` t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d'); 7. 入ってくる注文を30分ごとにカウントし、同様に10分、20分ごとにカウントします。 SELECT CONCAT(DATE_FORMAT(create_time, '%Y-%m-%d %H:' ),IF(FLOOR(DATE_FORMAT(create_time, '%i') / 30 ) = 0, '00','30')) AS time_scope, COUNT(*) FROM yyd_order WHERE create_time>'2018-05-11' GROUP BY time_scope ORDER BY DATE_FORMAT(create_time, '%H:%i'), DATE_FORMAT(create_time, '%Y-%m-%d') DESC; 8. 成功率、失敗率、一時テーブル結合時間 *から選択 (SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d') t_date,COUNT(1) '成功数' FROM yyd_order t WHERE t.`create_time` > '2018-05-17' AND t.`status` = 'repay_yes' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d')) t1 右結合 (SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d') t_date,COUNT(1) 'Total' FROM yyd_order t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d')) t2 ON t1.t_date=t2.t_date; 9. ログテーブルの最後のログステータス値を情報テーブルのステータスに更新し、a join b on xx set a.status=b.status where tmp group by userid tmp2を更新します。インデックスに注意してください。 t_order t0 を更新し、LEFT JOIN (SELECT * FROM (SELECT * FROM t_order_log t WHERE t.create_time>'2018-05-11' ORDER BY id DESC) t1 を実行します。 GROUP BY t1.user_id ) ON t.user_id=t2.user_id SET t0.`status`=t2.status WHERE t0.`create_time`>'2018-05-11' AND t0.`status`=10; 10. テーブルをバックアップし、select xxx where xxxとしてテーブルを作成します。 SELECT * FROM t_order として t_m テーブルを作成します。 11. テーブルをロックせずにメモを変更するだけで、すべてのタイプが一貫して高速に 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
>>: Linux の運用と保守で netstat の代わりに ss コマンドを使用する方法
あいまいクエリにOracleデータベースを使用する場合、コンソール エラーは次の図に表示されます。理...
目次MySQL の current_timestamp の落とし穴エラーを報告する私の解決策mysq...
数日前、Google Reader で Yu Bo さんが共有した投稿「空のパスがページのパフォーマ...
サーバーマッチングロジックNginx は、リクエストを実行するサーバー ブロックを決定するときに、サ...
InnoDB REDO ログ ファイルのサイズと数を調整する場合は、次の手順に従います。 1. My...
この記事では、例を使用して、MySQL でストアド プロシージャを作成し、ループでレコードを追加する...
1. プロキシサーバーとは何ですか?プロキシ サーバーは、クライアントが要求を送信すると、それを直接...
一言で言えば: データハイジャック (Object.defineProperty) + パブリッシュ...
MySQL でデータを削除する方法は 2 つあります。1 つは DELETE ステートメント、もう ...
1. 設置前の清掃 rpm -qa | grep jdk rpm -qa | grep gcj yu...
序文これまでインターネットでMySQLジョイントインデックスの最左接頭辞マッチングに関する記事をたく...
背景会社のサブプロジェクトが増えるにつれて、さまざまなサイズのプロジェクトが10個以上になります(バ...
プライベート変数のクロージャ実装プライベート変数は共有されないnew キーワードにより、 perso...
My97DatePicker は非常に柔軟で使いやすい日付コントロールです。使い方はとても簡単です。...
達成される効果:マウスを小さな画像の上に置くと、小さなブロックが小さな画像の上に表示され、この小さな...