よく使用されるデータベースである 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 コマンドを使用する方法
1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....
目次質問: ボタンをクリックすると、スパンの色が赤に変わりますか?上記の問題を分析します。 2番目の...
目次1. SparkとHadoopの比較1.1 Haoopの欠点1.2 Hadoop MR に対する...
一般的に言えば、HTML ドキュメント内で極端に大きな <ol> リストに遭遇する可能性...
今日はメニューボタンを作りました。マウスをボタンに移動するすると、ドロップダウンサブメニューが表示さ...
1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...
Docker はますます多くのシナリオで使用されています。コマンドラインツールに慣れていない人にとっ...
最近、開発中に両端が揃ったレイアウトに遭遇しました。レイアウトはパーセンテージに基づいていました。以...
1. mysqldump の紹介mysqldump は、MySQL に付属する論理バックアップ ツー...
1. コンポーネントと実装機能Keepalived: Haproxy サービスの高可用性を実現し、...
最近何かをするときにラベル タグを使用しました。以前はラベル タグをほとんど使用していなかったため、...
目次1. toStringメソッドの3つの機能2. オブジェクトを表す文字列を返す3. カスタム t...
1. 問題MySQL の初期化時に発生する問題は、次のとおりです。 1. 「MSVCR120.dll...
Adobe Brackets は、HTML、CSS、JavaScript 用のオープンソースでシンプ...
フォームのフロントエンド レイアウトでは、テキスト ボックスのプロンプト テキストを両端に揃える必要...