Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn MySQL với số lượng và nhóm theo

Giả sử rằng ngày của bạn là datetime thực tế cột:

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

Bạn có thể nối tháng và năm của mình như vậy:

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

Để tìm những tháng không có bản ghi, bạn sẽ cần một bảng ngày tháng. Nếu không thể tạo, bạn có thể UNION ALL một bảng lịch như vậy:

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

Xem bản trình diễn




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại dữ liệu của kết quả SUM trong MySQL

  2. SQL SERVER - SQL_NO_CACHE và TÙY CHỌN (RECOMPILE)

  3. Câu lệnh cập nhật Python MYSQL

  4. mysqldump:Không thể thực thi. Bảng không xác định 'cột_thống kê' trong information_schema

  5. Đặt các biến cấu hình MySQL - MySQL 5.7 so với MySQL 8.0