このクエリはすべての行をカウントし、Attribute
が存在する行のみもカウントします。 nullではなく、行の年と月でグループ化:
SELECT
Year(`date`),
Month(`date`),
Count(*) As Total_Rows,
Count(`Attribute`) As Rows_With_Attribute
FROM your_table
GROUP BY Year(`date`), Month(`date`)
(これは、Count(*)がすべての行をカウントするため、Count(Attibute)は属性がnullでないすべての行をカウントするためです)
ピボットでテーブルが必要な場合は、これを使用して、属性が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`)
そして、これですべての行をカウントします:
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`)
(または、idをカウントする代わりに、Sum(Month(
date )=1)
カンダーの答えのように)。もちろん、両方のクエリを組み合わせてこれに含めることができます:
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`)