Kueri ini akan menghitung semua baris, dan juga hanya akan menghitung baris di mana Attribute
bukan nol, mengelompokkan menurut tahun dan bulan dalam baris:
SELECT
Year(`date`),
Month(`date`),
Count(*) As Total_Rows,
Count(`Attribute`) As Rows_With_Attribute
FROM your_table
GROUP BY Year(`date`), Month(`date`)
(ini karena Count(*) menghitung semua baris, Count(Attribute) menghitung semua baris di mana Atribut bukan null)
Jika Anda membutuhkan tabel Anda di PIVOT, Anda dapat menggunakan ini untuk menghitung hanya baris di mana Atribut bukan null:
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`)
Dan ini untuk menghitung semua baris:
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`)
(atau, alih-alih menghitung id, Anda dapat menggunakan Sum(Month(
.) tanggal)=1)
seperti dalam jawaban kander). Tentu saja Anda dapat menggabungkan kedua kueri menjadi ini:
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`)