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

countとgroupbyを使用したMySQLクエリ

    あなたの日付が実際のdatetimeであると仮定します 列:

    SELECT MONTH(date), YEAR(date), id_publisher, COUNT(*)
    FROM raw_occurrence_record
    GROUP BY MONTH(date), YEAR(date), id_publisher
    

    次のように月と年を連結できます:

    SELECT CONCAT(MONTH(date), '/', YEAR(date)) AS Month, id_publisher, COUNT(*)
    FROM raw_occurrence_record
    GROUP BY MONTH(date), YEAR(date), id_publisher
    

    レコードがない月を見つけるには、日付テーブルが必要になります。作成できない場合は、UNION ALLできます。 そのようなカレンダーテーブル:

    SELECT a.year, a.month, b.id_publisher, COUNT(b.id_publisher) AS num
    FROM
      (SELECT 11 AS month, 2012 AS year
       UNION ALL
       SELECT 12, 2012
       UNION ALL
       SELECT 1, 2013
       UNION ALL
       SELECT 2, 2013) a
    LEFT JOIN raw_occurence_record b
      ON YEAR(b.date) = a.year AND MONTH(b.date) = a.month
    GROUP BY a.year, a.month, b.id_publisher
    

    デモを見る




    1. EXTRACT()の例– MySQL

    2. MySQLのラグ/リード機能?

    3. sqlparameterをIN()に渡す方法は?

    4. MySQL LEAST()関数–引数のリストから最小の引数を検索します