sql >> Database teknologi >  >> RDS >> Mysql

Sådan grupperes efter år og måned i MySQL

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`)


  1. Hvordan opretter man et array fra dette resultatsæt (indlejrede kategorier gemt i databaseret med traversal model)?

  2. cakephp:hvordan får man NOW() til at fungere i søgetilstand?

  3. MySql - Versalfølsomt problem af tabeller på anden server

  4. Sæt NOW() som standardværdi for datetime datatype?