Truy vấn này sẽ đếm tất cả các hàng và cũng sẽ chỉ đếm các hàng có Attribute
không rỗng, nhóm theo năm và tháng thành các hàng:
SELECT
Year(`date`),
Month(`date`),
Count(*) As Total_Rows,
Count(`Attribute`) As Rows_With_Attribute
FROM your_table
GROUP BY Year(`date`), Month(`date`)
(điều này vì Count (*) đếm tất cả các hàng, Count (Attibute) đếm tất cả các hàng có Thuộc tính không rỗng)
Nếu bạn cần bảng của mình trong PIVOT, bạn có thể sử dụng bảng này để chỉ đếm các hàng có Thuộc tính không rỗng:
SELECT
Year(`date`),
Count(case when month(`date`)=1 then `Attribute` end) As Jan,
Count(case when month(`date`)=2 then `Attribute` end) As Feb,
Count(case when month(`date`)=3 then `Attribute` end) As Mar,
...
FROM your_table
GROUP BY Year(`date`)
Và điều này để đếm tất cả các hàng:
SELECT
Year(`date`),
Count(case when month(`date`)=1 then id end) As Jan,
Count(case when month(`date`)=2 then id end) As Feb,
Count(case when month(`date`)=3 then id end) As Mar,
...
FROM your_table
GROUP BY Year(`date`)
(hoặc, thay vì đếm id, bạn có thể sử dụng Sum(Month(
ngày )=1)
như trong câu trả lời của kander). Tất nhiên, bạn có thể kết hợp cả hai truy vấn vào điều này:
SELECT
Year(`date`),
Count(case when month(`date`)=1 then id end) As Jan_Tot,
Count(case when month(`date`)=1 then `Attribute` end) As Jan_Attr,
Count(case when month(`date`)=2 then id end) As Feb_Tot,
Count(case when month(`date`)=2 then `Attribute` end) As Feb_Attr,
Count(case when month(`date`)=3 then id end) As Mar_Tot,
Count(case when month(`date`)=3 then `Attribute` end) As Mar_Attr,
...
FROM your_table
GROUP BY Year(`date`)