ビジネスニーズ
新たにシステムに追加されるように、統計関数、要件は日ごとにグループ化された日付範囲の統計データを指定し、データ量の時間各日を表示できるようにします。
ソリューション
の統計による直接データテーブルの日付フィールドグループには、データがビジネスニーズに沿ったものでないとする、1日の場合、日付が存在しないことがわかっていません。Baiduは、いくつかのプログラムがあることがわかっ基本的に2つ:まず、日付の新しいリスト、それらに次の10年の日付を作成し、クエリの参加などの統計に話し、2番目は、SQLロジックでアプリケーションコード以上の連続日数のユニオンクエリです。彼らはより複雑です。
リファレンスOracleの「デュアル・レベルでの接続からレベルを選択し 、<31」 :アイデアの実現
うち日付範囲を指定した日付のリスト最初のクエリで、1を
SELECT @cdate:= DATE_ADD(@cdate、間隔- 1 日)として date_str、0 としてdate_count FROM(SELECT @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 FROM(SELECT @cdateを:= DATE_ADD(CURDATE()、インターバル+ 1 日)から t_table1)TMP1 WHERE @cdate > ' 2018 - 11 - 01 ' )のT1 LEFT JOIN( SELECT 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
結果は以下の通り: