よく使用されるデータベースである 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. Redisイメージを取得するdocker pull redis 2. それぞれポート6379、...
序文MySQL は、myisam、innodb、memory、archive、example など、...
img 画像タグに alt 属性を追加しますか?画像 img タグの alt 属性を見落とすことはよ...
序文:データベースのバックアップの重要性は、特にデータの損失が深刻な結果を招く可能性がある実稼働環境...
この記事では、カードフリップ効果を実現するためのVueの具体的なコードを例として紹介します。具体的な...
目次DMLステートメント1. レコードを挿入する2. 記録を更新する3. シンプルなクエリレコード4...
この投稿では、キャンバスとドラッグ可能なノード インターフェースを使用するデスクトップおよび Web...
グローバル ID を生成する方法は多数あります。ここでは簡単な解決策を紹介します。MySQL の自動...
1. 改行を強制せず、省略記号で終了します。コードをコピーコードは次のとおりです。 <div ...
目次1. プロジェクトの説明1.1 背景1.2 実装設計1.2.1 従来の方法1.2.2 最適化され...
1. はじめに先ほど、フロントエンドの表示の問題について説明しました。では、前のコンテンツに戻って、...
スレッドがテーブルに対して DELAYED ステートメントを実行するときに、そのようなハンドラーが存...
CSS メディア クエリには非常に便利なアスペクト比、aspect-ratio があり、幅と高さを直...
グリッドレイアウト親要素に追加された属性グリッドテンプレートの列/グリッドテンプレートの行要素の行ま...
背景ここ 2 日間 Docker を使用していたところ、コンテナの起動後に date -R の出力タ...