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 言語百科事典

推薦する

Vue で @person 関数を実装する方法

この記事ではvueを使用し、マウスクリックイベントといくつかの小さなページの最適化を追加します。 基...

mysqlのデータディレクトリ内のファイルを直接コピーしてデータを復元する実装

mysqlはデータディレクトリ内のファイルをコピーしてデータを復元します背景: MySQL がクラッ...

react-beautiful-dnd を使用してリスト間のドラッグ アンド ドロップを実装する

目次react-beautiful-dndを選ぶ理由基本的な使い方基本概念使い方使用中に発生した問題...

MySQL の最適化: InnoDB の最適化

勉強の計画は簡単に中断され、継続するのが困難です。先日、社内で事業の方向性を調整するための会議があり...

MySQLでテーブルインデックスを構築する方法

目次複数の種類のフィルタリングをサポート複数の範囲のクエリを避ける並べ替えを最適化するインデックスの...

フロントエンドは画像を遅延ロードする方法を知っている必要があります(3つの方法)

目次1. 遅延読み込みとは何ですか? 2. 遅延読み込みを実装する🌄: 2.1 最初の方法: 2.2...

Reactは無限ループスクロール情報を実装する

この記事では、無限ループスクロールを実現するためのReactの具体的なコードを参考までに紹介します。...

MySQLのROUND関数の丸め演算における落とし穴の分析

この記事では、MySQL の ROUND 関数を使用した丸め操作の落とし穴を例を使って説明します。ご...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...

mysql5.7.18 解凍バージョンで mysql サービスを起動します

mysql5.7.18の解凍版はmysqlサービスを起動します。具体的な内容は以下のとおりです。 1...

Linux スケジュールタスクの関連操作の概要

皆様の参考と操作を容易にするために、様々な主要ウェブサイトを検索し、関連するスケジュールされたタスク...

HTML+SassはHambergurMenu(ハンバーガーメニュー)を実装します

先日、外国人の方がHTML+CSSを使ってHamburgerMenuを実装している動画を見ました。最...

XHTML Web ページ チュートリアル

この記事は主に、初心者に XHTML の基本的な知識と、XHTML と HTML の違いを理解しても...

DeepinでPyenvをインストールする手順

序文これまでは、/bin/ ディレクトリのソフトリンクを変更して Python のバージョンを切り替...

Vueナンバープレート検索コンポーネントの使い方の詳しい説明

参考までに、シンプルなナンバープレート入力コンポーネント(vue)です。具体的な内容は次のとおりです...