Mysql
 sql >> база данни >  >> RDS >> Mysql

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TIMEDIFF() Примери – MySQL

  2. Избиране на непрекъснат блок от записи в mysql

  3. Създаване на масив с помощта на рекурсивен php от mysql

  4. PyMySQL връща стари/моментни стойности/не изпълнява повторно заявка?

  5. django.db.utils.OperationalError:(2013 г., Загубена връзка с MySQL сървъра при „ръкостискане:четене на първоначален комуникационен пакет“, системна грешка:0)