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データベースで外部キー制約を使用する必要があるかどうかの詳細な説明

1. はじめに外部キー制約を使用するかどうかという話題は、すでに決まり文句になっています。学校では、...

ウェブインターフェースデザインでウェブサイトのスタイルガイドを作成する方法(画像とテキスト付き)

スタイル ガイドとは何でしょうか? 簡単に言えば、ストーリーを伝える方法を説明するドキュメントです。...

Node.js でのクラスター作成に関する簡単な説明

目次クラスタクラスターの詳細クラスター内のイベントクラスター内のメソッドクラスター内の属性クラスター...

画像をクリックして切り替えるJavaScript

クリックして画像を切り替えることは、日常生活で非常によく行われることです。今日の練習は、画像を切り替...

MySQLデータベースの基本構文と操作

MySQLデータベースの基本構文DDL操作データベース作成構文: create database デ...

Dockerイメージの階層化の原理の詳細な説明

ベースイメージベースイメージには 2 つの意味があります。他のイメージに依存せず、ゼロから構築します...

Vue のミックスインの使用方法の詳細な説明

目次序文1. Mixin とは何ですか? 2. Mixin はいつ使用すればよいですか? 3. Mi...

MySQL (InnoDB) がデッドロックを処理する方法の詳細な説明

1. デッドロックとは何ですか?正式な定義は次のとおりです: 2 つのトランザクションが相手側で必要...

MySQL並列レプリケーションの簡単な説明

1. 並列レプリケーションの背景まず、並列レプリケーションの概念はなぜ存在するのでしょうか? 1. ...

アイデアはDockerプラグインを使用してワンクリックの自動デプロイを実現します

目次環境: 1. Dockerはリモート接続アクセスを可能にするidea dockerプラグインをイ...

vuex名前空間の使用

目次Vuex は単一の状態ツリーを使用するため、すべてのアプリケーション状態が比較的大きなオブジェク...

2つのVirtualBox仮想ネットワークをブリッジするLinuxブリッジメソッドの手順

この記事は、この時期の「ピーターから奪ってポールに払う」という仕事のスタイルに対する私の不満から生ま...

ドメイン名を介してプロジェクトにアクセスするnginx + tomcatの例

ドメイン名を使ってプロジェクトにアクセスする方法が気になったのですが、自分でドメイン名を取得するのは...

Vueのフロントエンドとバックエンドのデータのやり取りと表示を理解する方法

目次1. 技術概要2. 技術的な詳細1. インターフェースからバックエンドデータを取得する2. フロ...

mysql 一時テーブルの使用状況の分析 [クエリ結果は一時テーブルに保存できます]

この記事では、例を使用して MySQL 一時テーブルの使用方法を説明します。ご参考までに、詳細は以下...