Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да групирате по година и месец в MySQL

Тази заявка ще преброи всички редове и също ще преброи само редовете, където 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)

Ако имате нужда от вашата таблица в PIVOT, можете да използвате това, за да преброите само редовете, където атрибутът не е 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( дата)=1) като в отговора на kander). Разбира се, можете да комбинирате и двете заявки в това:

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. Как да направя тригер, който изпълнява това условие?

  2. Как да задам полето AUTO_INCREMENT с да започне със стойността 6000 в mysql?

  3. Django syncdb работи в SQLite, не успява в MySQL

  4. mysql_num_fields():предоставеният аргумент не е валиден резултатен ресурс на MySQL

  5. Mysql Създаване на база данни със специални знаци в името