sql >> Database teknologi >  >> RDS >> Mysql

MySQL-forespørgsel med optælling og grupper efter

Forudsat at din dato er et faktisk datetime kolonne:

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

Du kan sammenkæde din måned og år sådan:

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

For at finde måneder, hvor der ikke er nogen poster, skal du bruge en datotabel. Hvis du ikke kan oprette en, kan du UNION ALL en kalendertabel som sådan:

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

Se en demo




  1. Mysql:Indstil kolonnetegnsæt

  2. Symfony2 returnerer tom JSON på AJAX-kald, mens variabel ikke er tom

  3. Vælg poster fra i dag, denne uge, denne måned php mysql

  4. Hent id for hver INSERT-sætning i multi-forespørgsel