Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak pogrupować według roku i miesiąca w MySQL

To zapytanie policzy wszystkie wiersze, a także policzy tylko wiersze, w których Attribute nie ma wartości null, grupowanie według roku i miesiąca w wierszach:

SELECT
  Year(`date`),
  Month(`date`),
  Count(*) As Total_Rows,
  Count(`Attribute`) As Rows_With_Attribute
FROM your_table
GROUP BY Year(`date`), Month(`date`)

(ponieważ Count(*) zlicza wszystkie wiersze, Count(Attibute) zlicza wszystkie wiersze, w których atrybut Attribute nie jest pusty)

Jeśli potrzebujesz tabeli w trybie PIVOT, możesz użyć tego do policzenia tylko wierszy, w których atrybut nie jest pusty:

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

A to, aby policzyć wszystkie wiersze:

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

(lub zamiast liczenia id, możesz użyć Sum(Month( data)=1) jak w odpowiedzi Kandera). Oczywiście możesz połączyć oba zapytania w ten sposób:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niestandardowe zapytanie Select dla metatabeli

  2. Jak połączyć się z serwerem mysql za pomocą Go i go-sql-driver?

  3. Lon/Lat Order przy użyciu przestrzennego typu POINT w MySQL

  4. Jaka jest różnica między BIT i TINYINT w MySQL?

  5. MySQL Wybierz zarówno to, jak i tamto