sql >> Databáze >  >> RDS >> Mysql

Dotaz MySQL s počtem a seskupením podle

Za předpokladu, že vaše datum je skutečné datetime sloupec:

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

Měsíc a rok můžete zřetězit takto:

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

Chcete-li najít měsíce, kde nejsou žádné záznamy, budete potřebovat tabulku dat. Pokud jej nemůžete vytvořit, můžete UNION ALL kalendářní tabulku, jako je tato:

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

Zobrazit ukázku




  1. Jak mohu převést řetězec na float v mysql?

  2. Vkládání národních znaků do sloupce Oracle NCHAR nebo NVARCHAR nefunguje

  3. Příklady ORD() – MySQL

  4. Rychle přidejte kopii sloupce do tabulky MySQL