MySQLクエリデータを時間別に表示します。データがない場合は0を入力してください。

MySQLクエリデータを時間別に表示します。データがない場合は0を入力してください。

需要背景

統計インターフェースでは、フロントエンドは 2 つの配列を返す必要があります。1 つは 0 から 23 までの時間数で、もう 1 つは各時間に対応する統計数値です。

アイデアは、group by を直接使用して、カウントするテーブルをクエリすることです。特定の時間の統計数が 0 の場合、その時間はグループ化されません。考えてみると、時間を表す列が1つだけの補助テーブルを作成し、0~23を挿入して合計24時間を表す必要があります。

テーブル hours_list を作成します (
 時間 int NOT NULL 主キー
)

まず時間表を確認し、次に確認する必要がある表を接続し、統計のない時間を 0 で入力します。ここでは、複数のテーブルをクエリする必要があるため、create_time は各時間間隔内にあり、SOURCE_ID はクエリ条件の統計合計に等しいため、複数のテーブルを UNION ALL します。

	選択
			 t.時間、
			 sum(t.HOUR_COUNT) 時間カウント
			から
    (選択
     hs. 時間として時間、
     COUNT(cs.RECORD_ID) を HOUR_COUNT として計算する
    から
     cbc_hours_list hs
    LEFT JOIN cbc_source_0002 cs ON HOUR (cs.create_time) = hs.HOUR
    かつ cs.create_time > #{startTime}
    かつ cs.create_time <= #{endTime}
    <#if sourceId?exists && sourceId !=''>
     かつ SOURCE_ID = #{sourceId}
    </#if>
    グループ化
     hs. 時間
    ユニオンオール
    選択
     hs.HOUR AS HOUR、
     COUNT(cs.RECORD_ID) を HOUR_COUNT として計算する
    から
     cbc_hours_list hs
    cbc_source_hs cs ON HOUR を左結合します (cs.create_time) = hs.HOUR
    かつ cs.create_time > #{startTime}
    かつ cs.create_time <= #{endTime}
    <#if sourceId?exists && sourceId !=''>
     かつ SOURCE_ID = #{sourceId}
    </#if>
    グループ化
     hs. 時間
    ユニオンオール
    選択
     hs.HOUR AS HOUR、
     COUNT(cs.RECORD_ID) を HOUR_COUNT として計算する
    から
     cbc_hours_list hs
    左結合 cbc_source_kfyj cs ON HOUR (cs.create_time) = hs.HOUR
    かつ cs.create_time > #{startTime}
    かつ cs.create_time <= #{endTime}
    <#if sourceId?exists && sourceId !=''>
     かつ SOURCE_ID = #{sourceId}
    </#if>
    グループ化
     hs. 時間
    ユニオンオール
    選択
     hs.HOUR AS HOUR、
     COUNT(cs.RECORD_ID) を HOUR_COUNT として計算する
    から
     cbc_hours_list hs
    左結合 cbc_source_his_0002 cs ON HOUR (cs.create_time) = hs.HOUR
    かつ cs.create_time > #{startTime}
    かつ cs.create_time <= #{endTime}
    <#if sourceId?exists && sourceId !=''>
     かつ SOURCE_ID = #{sourceId}
    </#if>
    グループ化
     hs. 時間
    ユニオンオール
    選択
     hs.HOUR AS HOUR、
     COUNT(cs.RECORD_ID) を HOUR_COUNT として計算する
    から
     cbc_hours_list hs
    左結合 cbc_source_his_hs cs ON HOUR (cs.create_time) = hs.HOUR
    かつ cs.create_time > #{startTime}
    かつ cs.create_time <= #{endTime}
    <#if sourceId?exists && sourceId !=''>
     かつ SOURCE_ID = #{sourceId}
    </#if>
    グループ化
     hs. 時間
    ユニオンオール
    選択
     hs.HOUR AS HOUR、
     COUNT(cs.RECORD_ID) を HOUR_COUNT として計算する
    から
     cbc_hours_list hs
    左結合 cbc_source_his_kfyj cs ON HOUR (cs.create_time) = hs.HOUR
    かつ cs.create_time > #{startTime}
    かつ cs.create_time <= #{endTime}
    <#if sourceId?exists && sourceId !=''>
     かつ SOURCE_ID = #{sourceId}
    </#if>
    グループ化
     hs. 時間) t
   グループ化
    t.時間

効果

統計カウントが 0 の時間も見つかります。

ここに画像の説明を挿入

これで、MySQL データを時間単位でクエリし、欠落しているデータをゼロで埋める方法についての説明は終わりです。MySQL データを時間単位でクエリする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL サブクエリ (ネストされたクエリ)、結合テーブル、複合クエリの詳細な説明
  • MySQL sql_modeクエリと設定の詳細な説明
  • MySQL サブクエリとグループ化されたクエリ
  • MySQL グループ化クエリと集計関数
  • MysqlクエリJSON結果に関連する関数の概要
  • MySQLクエリのソートとページング関連
  • MySql クエリ期間メソッド
  • MySQL での基本的な複数テーブル結合クエリのチュートリアル
  • MySQL のサブクエリの例
  • MySQL複合クエリの詳細な説明

<<:  dockerでsshd操作を有効にする

>>:  HTML 言語百科事典

推薦する

モバイル開発チュートリアル: ピクセル表示の問題の概要

序文モバイル端末の開発の過程で、モバイル端末のディスプレイはデスクトップ端末のディスプレイとは一般的...

MySQL のユニークインデックスと通常のインデックスのどちらを選択すればよいでしょうか?

ユーザー テーブルを設計するときに、各人の ID 番号が一意であり、検索する必要があるシナリオを想像...

Centos8 は kdc 暗号化に基づいて nfs を構築します

目次構成nfs サーバー (nfs.skills.com) nfs クライアント (client.s...

HTML テーブル データを Json 形式に変換するサンプル コード

<table>テーブルデータをJSON形式に変換するJavaScript関数は次のとおり...

最小限の展開で CentOS8 に OpenStack Ussuri をインストールする方法の詳細なチュートリアル

CentOS8 に最小限のデプロイメントで OpenStack Ussuri をインストールするため...

CentOS 6.2 に MySQL 5.7.28 をインストールするチュートリアル (mysql ノート)

1. 環境整備1.MySQLインストールパス: /usr/local 2. CentOS 6.2 ...

Nginx ソースコード調査における nginx 電流制限モジュールの詳細な説明

目次1. 電流制限アルゴリズム2. nginxの基礎知識4. 実戦要約する高並行性システムには、キャ...

Linux で特殊文字のファイル名やディレクトリを削除する方法

inode番号でファイルを削除するまずls -iを使用して、削除するファイルのinode番号を見つけ...

CentOS7 に ElasticSearch 6.4.1 をインストールするための詳細なチュートリアル

1. ElasticSearch 6.4.1 インストール パッケージを次の場所からダウンロードしま...

MYSQL ストアドプロシージャと関数の簡単な記述

ストアドプロシージャとは簡単に言えば、これは強力で、JAVA 言語のメソッドに似た比較的複雑な論理関...

Vue Router の 10 の高度なヒントのまとめ

序文Vue Router は、Vue.js の公式ルーティング マネージャーです。 Vue.js の...

Linux のバックグラウンドで実行するいくつかの方法 (まとめ)

1. ノーフープハングアップ信号を無視してプログラムを実行する追加メモnohup コマンドは、ハン...

Vue+SpringBoot+Shiroのクロスドメイン問題を解決する

目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...

Linux クラウド サーバー上に SFTP サーバーとイメージ サーバーを構築する方法

まず、SFTP プロトコルと FTP プロトコルの違いを理解してください。ここでは詳細には触れません...

Linux カーネルの copy_{to, from}_user() に関する考察

目次1. copy_{to,from}_user() とは何か1. copy_{to,from}_u...