sql >> Database >  >> RDS >> Mysql

MySQL-query met telling en groeperen op

Ervan uitgaande dat uw datum een ​​werkelijke datetime is kolom:

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

U kunt uw maand en jaar als volgt samenvoegen:

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

Om maanden te vinden waar er geen records zijn, hebt u een datumtabel nodig. Als je er geen kunt maken, kun je UNION ALL een kalendertabel zoals:

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

Bekijk een demo




  1. Mysql-tabel bijwerken met selectiequery uit een andere database

  2. Een varchar-kolomtype converteren naar een datumtype zonder de datums te verliezen

  3. cx_Oracle:Hoe kan ik elke rij als een woordenboek ontvangen?

  4. MySQL-server is verdwenen tijdens het crawlen in Perl