Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie MySQL z licznikiem i grupowaniem według

Zakładając, że Twoja data jest rzeczywistą datetime kolumna:

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

Możesz połączyć swój miesiąc i rok w ten sposób:

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

Aby znaleźć miesiące, w których nie ma rekordów, będziesz potrzebować tabeli dat. Jeśli nie możesz go utworzyć, możesz UNION ALL tabela kalendarza taka jak ta:

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

Zobacz demo




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyszukaj GROUP_CONCAT używając LIKE

  2. Sprawdzanie, czy wynik jest pusty (PHP, PDO i MySQL)

  3. Jak mogę przyspieszyć proces bazy danych?

  4. Jak sprawić, by baza danych MySQL działała całkowicie w pamięci?

  5. Połącz się z bazą danych mysql przez SSH przez PHP