MySQLは、日付の完全なリストを提供するために、一日の統計でグループ化され得る、データは自動的に0を記入されていません

ビジネスニーズ
新たにシステムに追加されるように、統計関数、要件は日ごとにグループ化された日付範囲の統計データを指定し、データ量の時間各日を表示できるようにします。

ソリューション
の統計による直接データテーブルの日付フィールドグループには、データがビジネスニーズに沿ったものでないとする、1日の場合、日付が存在しないことがわかっていません。Baiduは、いくつかのプログラムがあることがわかっ基本的に2つ:まず、日付の新しいリスト、それらに次の10年の日付を作成し、クエリの参加などの統計に話し、2番目は、SQLロジックでアプリケーションコード以上の連続日数のユニオンクエリです。彼らはより複雑です。
リファレンスOracleの「デュアル・レベルでの接続からレベルを選択し 、<31」 :アイデアの実現
うち日付範囲を指定した日付のリスト最初のクエリで、1を

SELECT  
    @cdate= DATE_ADD(@cdate、間隔-  1  として date_str、0  としてdate_count
 FROMSELECT  @cdate= DATE_ADD(CURDATE()、インターバル+  1  から T1 t_table1)

2、ビジネス統計も日付上記の問い合わせやエイリアスを設定した日付の統計への問い合わせ件数

SELECT 
    FROM_UNIXTIME(m.sdate、' %Y-%M-%D 'として date_str、カウント*としてdate_count
 から t_table1 としてm個の
  によって FROM_UNIXTIME(m.sdate、' %Y-%M-%D '

0を埋めるために左ではなく日数に接続された2つのクエリを一緒になって3、

SELECT t1.date_str、COALESCE(t2.date_total_count、0としてdate_total_count
 FROM SELECT  @cdateを= DATE_ADD(@cdate、間隔-  1  として date_str FROMSELECT  @cdateを= DATE_ADD(CURDATE()、インターバル+  1  から t_table1)TMP1 WHERE  @cdate  >  ' 2018 - 11 - 01 ' 
)のT1 
LEFT  JOINSELECT FROM_UNIXTIME(m.sdate、' %Y-%M-%D 'として、date_str カウント*として date_total_count FROM t_table1 として M m.sdate  XXXX  XXXXX GROUP BY FROM_UNIXTIME(m.sdate、' % Y-%M-%D ' 
)T2  t1.date_str = t2.date_str 

結果は以下の通り:

 

おすすめ

転載: www.cnblogs.com/rinack/p/11105779.html