Denne forespørgsel tæller alle rækkerne og tæller også kun de rækker, hvor Attribute
er ikke null, gruppering efter år og måned i rækker:
SELECT
Year(`date`),
Month(`date`),
Count(*) As Total_Rows,
Count(`Attribute`) As Rows_With_Attribute
FROM your_table
GROUP BY Year(`date`), Month(`date`)
(dette fordi Count(*) tæller alle rækkerne, Count(Attibute) tæller alle de rækker, hvor Attribute ikke er null)
Hvis du har brug for din tabel i PIVOT, kan du bruge denne til kun at tælle de rækker, hvor Attribute ikke er 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`)
Og dette for at tælle alle rækkerne:
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`)
(eller i stedet for at tælle id kan du bruge Sum(Month(
dato)=1)
som i kanders svar). Selvfølgelig kan du kombinere begge forespørgsler til dette:
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`)