タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈」とユーザー2:「触手モンスター、劉大理」にそれぞれ10,000人民元の報酬を与えることで、ダブル12の期間中の買い物を奨励するとします。 要件 1: MySQL の注文テーブルを使用して、ダブル 11 の 1 時間ごとにこの 2 人の人が発注した注文の数をカウントするように求められます。この SQL をどのように記述しますか。 数年前に初めてMySQlに触れたとき、私は若くて軽薄だったことを覚えています。効率を考慮する必要がないことを知ったとき、24回ループするインターフェイスを作成し、24個のSQL文をチェックに送信しました(顔を覆いました)。そのインターフェイスのせいで、技術マネージャーに嘲笑されました〜〜彼は私が食べた米よりも多くのSQL文を書いたと言いました。私たち山東省人は基本的に米を食べないのですが、それでも恥ずかしいです。 。 次に、マネージャーは DATE_FORMAT 関数を呼び出してグループ クエリを処理し、すべてが正常になります。効率は私のものより数十倍高くなります。それ以来、私は密かにSQLスキルを徹底的に勉強しようと計画しました。 翌日、私は友人とキング・オブ・グローリーを2ラウンドプレイしたので、計画は数年延期されました。 MySQL には、時間フィールドを処理するための特別にカプセル化された DATE_FORMAT 関数があります。DATE_FORMAT 関数は基本的にあらゆる時間フィールドの処理要件を満たすことができると言えます。 DATE_FORMAT(日付,形式)関数パラメータ分析: 1. date: 特定の時間フィールドを表します。または、now() を使用して現在の時刻を照会することもできます。 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'); -- 結果: 2020-12-07 22:18:58 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i'); -- 結果: 2020-12-07 22:18 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H'); -- 結果: 2020-12-07 22 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d'); -- 結果: 2020-12-07 SELECT DATE_FORMAT(NOW(),'%H:%i:%s'); -- 結果: 22:18:58 SELECT DATE_FORMAT(NOW(),'%H'); -- 結果: 22 上記の要件 1 の場合、DATE_FORMAT 関数を使用したクエリ方法は次のとおりです。 SELECT name を 'ユーザー名'、DATE_FORMAT(createTime,'%Y-%m-%d %H') を '時間/時間'、count(*) を '注文量' として t_order から選択します。 ここで、DATE_FORMAT(createTime,'%Y-%m-%d') = '2020-11-11' GROUP BY DATE_FORMAT(createTime,'%Y-%m-%d %H'); クエリ結果: mysql> SELECT name as 'ユーザー名', DATE_FORMAT(createTime,'%Y-%m-%d %H') as '時間/時間', count(*) as '注文量' from t_order where DATE_FORMAT(createTime,'%Y-%m-%d') = '2020-11-11' GROUP BY DATE_FORMAT(createTime,'%Y-%m-%d %H'); +------------------+---------------+-----------+ | ユーザー名| 時間| 注文量| +------------------+---------------+-----------+ | ショッピング皇帝 陳哈哈 | 2020-11-11 00 | 0 | | ショッピング皇帝 陳哈哈 | 2020-11-11 01 | 10 | | ショッピング皇帝 陳哈哈 | 2020-11-11 02 | 6 | | ショッピング皇帝 陳哈哈 | 2020-11-11 03 | 3 | | ショッピング皇帝 陳哈哈 | 2020-11-11 04 | 0 | | ショッピング皇帝 陳哈哈 | 2020-11-11 05 | 0 | | ショッピング皇帝 陳哈哈 | 2020-11-11 06 | 0 | | ショッピング皇帝 陳哈哈 | 2020-11-11 07 | 0 | | ショッピング皇帝 陳哈哈 | 2020-11-11 08 | 0 | | ショッピング皇帝 陳哈哈 | 2020-11-11 09 | 0 | | ショッピング皇帝 陳哈哈 | 2020-11-11 10 | 0 | | ショッピング皇帝 陳哈哈 | 2020-11-11 11 | 0 | | ショッピング皇帝 陳哈哈 | 2020-11-11 12 | 12 | | ショッピング皇帝 陳哈哈 | 2020-11-11 13 | 6 | | ショッピング皇帝 陳哈哈 | 2020-11-11 14 | 3 | | ショッピング皇帝 陳哈哈 | 2020-11-11 15 | 7 | | ショッピング皇帝 陳哈哈 | 2020-11-11 16 | 2 | | ショッピング皇帝 陳哈哈 | 2020-11-11 17 | 3 | | ショッピング皇帝 陳哈哈 | 2020-11-11 18 | 11 | | ショッピング皇帝 陳哈哈 | 2020-11-11 19 | 2 | | ショッピング皇帝 陳哈哈 | 2020-11-11 20 | 1 | | ショッピング皇帝 陳哈哈 | 2020-11-11 21 | 3 | | ショッピング皇帝 陳哈哈 | 2020-11-11 22 | 2 | | ショッピング皇帝 陳哈哈 | 2020-11-11 23 | 0 | +------------------+---------------+-----------+ セット内の行数は 24 です (0.00 秒) ここで、GROUP BY DATE_FORMAT(createTime,'%Y-%m-%d %H') は、「年、月、日 + 時間」の組み合わせ、具体的には特定の日の時刻を表します。 もちろん、時間で区切った次の 2 つの形式でも表記できますが...: 1. GROUP BY DATE_FORMAT(createTime,'%H') SELECT name を 'ユーザー名'、DATE_FORMAT(createTime,'%H') を '時間/時間'、count(*) を '注文量' として t_order から選択します。 DATE_FORMAT(createTime,'%H') でグループ化します。 クエリ結果 mysql> SELECT name as 'ユーザー名', DATE_FORMAT(createTime,'%H') as '時間/時間', count(*) as '注文量' from t_order GROUP BY DATE_FORMAT(createTime,'%H'); +-----------------+---------------+-----------+ | ユーザー名| 時間| 注文量| +-----------------+---------------+-----------+ | 触手モンスター 劉ダリ | 00 | 11 | | 触手モンスター 劉ダリ | 01 | 302 | | 触手モンスター 劉大理 | 02 | 277 | | 触手モンスター 劉大理 | 03 | 122 | | 触手モンスター 劉ダリ | 04 | 6 | | 触手モンスター 劉ダリ | 05 | 11 | | 触手モンスター 劉ダリ | 06 | 0 | | 触手モンスター 劉ダリ | 07 | 0 | | 触手モンスター 劉ダリ | 08 | 1 | | 触手モンスター 劉ダリ | 09 | 4 | | 触手モンスター 劉大理 | 10 | 5 | | 触手モンスター 劉大理 | 11 | 92 | | 触手怪人 劉大理 | 12 | 1937 | | 触手モンスター 劉大理 | 13 | 1602 | | 触手モンスター 劉大理 | 14 | 108 | | 触手モンスター 劉大理 | 15 | 78 | | 触手モンスター 劉大理 | 16 | 110 | | 触手モンスター 劉大理 | 17 | 108 | | 触手モンスター 劉大理 | 18 | 138 | | 触手モンスター 劉大理 | 19 | 66 | | 触手モンスター 劉大理 | 20 | 44 | | 触手モンスター 劉大理 | 21 | 59 | | 触手モンスター 劉大理 | 22 | 21 | | 触手モンスター 劉大理 | 23 | 8 | +-----------------+---------------+-----------+ セット内の行数は 24 行 (0.01 秒) クエリ結果から、見つかったデータは各時間におけるすべてのユーザーの過去の注文の分布であることがわかります。DATE_FORMAT(createTime,'%H') は任意の日の時刻を表し、GROUP BY HOUR(createTime) と同等です。 これらのデータがあれば、推奨アルゴリズムを作成する学生は、「触手怪人 劉大理」への広告宣伝にどの期間が最も効果的かを知ることができると思います。 MySQL DATE_FORMAT 関数の使用に関するこの記事はこれで終わりです。MySQL DATE_FORMAT に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: 英語: リンクタグはIEでhrefを自動的に補完します
あなたも私と同じように、コンピューターのファイルを整然と整理し、不要なファイルを適宜削除するプログラ...
目次操作方法操作プロセス既存のテーブルにパーティション テーブルを作成し、データを新しいテーブルに移...
この記事では、Docker を使用して Centos6 に Redis マスター/スレーブ データベ...
ソフィー・ハルダッククライドキー埠頭 37 東ソープボックス Rxバランス EEハーバー対比 SVN...
1. スクリプトを動的に読み込むウェブサイトの需要が高まるにつれて、スクリプトの需要も徐々に増加しま...
ここでは主に、スタンドアロンのプログラムを生成できるspring-bootと、Mavenプラグインd...
MySQLサービスを停止するWindowsでは、マイコンピュータを右クリック--管理--サービスと...
目次Samba サーバーの紹介Samba サーバー コンポーネントSamba サーバー関連の設定ファ...
Nginx を使用して Tomcat9 クラスターを構築し、Redis を使用してセッション共有を実...
この記事では、シンプルなカルーセル効果を実現するためのjsの具体的なコードを参考までに紹介します。具...
1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...
目次抽象化と再利用シリアルセグメントシリアル、セグメントパラレル要約するはじめに: JS は当然並列...
目次1. テーブルを作成する1.1 テストテーブルt_userを作成する1.2 一時テーブルの作成2...
テーブルの作成とインデックスの作成 テーブルtbl1を作成( id int ユニーク、sname v...
最近、React Hooks を zarm コンポーネント ライブラリと組み合わせて使用し、js...