sql >> データベース >  >> RDS >> Mysql

深夜から現在までのギャップのある1時間ごとのデータを取得する

    右結合が正しいアプローチですが、clicksの列を使用しています whereステートメントのテーブル。代わりに、フィルターをonに配置します :

    SELECT CONCAT(Hour, ':00-', Hour+1, ':00') AS Hours, IFNULL(COUNT(product_id), 0) AS `total_count`
    FROM     clicks
      RIGHT JOIN (
                   SELECT  0 AS Hour
             UNION ALL SELECT  1 UNION ALL SELECT  2 UNION ALL SELECT  3
             UNION ALL SELECT  4 UNION ALL SELECT  5 UNION ALL SELECT  6
             UNION ALL SELECT  7 UNION ALL SELECT  8 UNION ALL SELECT  9
             UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12
             UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
             UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18
             UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21
             UNION ALL SELECT 22 UNION ALL SELECT 23
      )      AS AllHours ON HOUR(clicked_at) = Hour
      and   ( clicked_at BETWEEN CURRENT_DATE() AND NOW()  OR clicked_at IS NULL ) AND clicks.site='awesome-site.com'
    GROUP BY Hour
    ORDER BY Hour
    


    1. SQL / Doctrine:左結合の問題

    2. 接続プールを使用した後でも、あまりにも多くの同時接続を処理するにはどうすればよいですか?

    3. PHPMYSQL->MYSQLデータベースから「date」タイプとして保存された日付を表示

    4. 動的SQL-EXEC(@SQL)とEXEC SP_EXECUTESQL(@SQL)