Mysql 使用“选择结果”生成表格
我有一张这样的桌子: 我要执行以下SELECT语句:Mysql 使用“选择结果”生成表格,mysql,sql,Mysql,Sql,我有一张这样的桌子: 我要执行以下SELECT语句: SELECT count(*) from table WHERE A=1 and date between 2013-02 and 2013-03 SELECT count(*) from table WHERE A=1 and date between 2013-03 and 2013-04 SELECT count(*) from table WHERE A=1 and date between 2013-04 and 2013-05
SELECT count(*) from table WHERE A=1 and date between 2013-02 and 2013-03
SELECT count(*) from table WHERE A=1 and date between 2013-03 and 2013-04
SELECT count(*) from table WHERE A=1 and date between 2013-04 and 2013-05
....
SELECT count(*) from table WHERE B=1 and date between 2013-02 and 2013-03
SELECT count(*) from table WHERE B=1 and date between 2013-03 and 2013-04
SELECT count(*) from table WHERE B=1 and date between 2013-04 and 2013-05
...etc
最快的查询是什么?我可以将结果安排在如下表格中:
date |A=1 |B=1 |C=1 |...
2013-Feb|count|count|count|
2013-Mar|count|...
如果列A
到E
中的值仅为0或1(或可能NULL
),则我们可以简化为:
SELECT DATE_FORMAT(date, '%Y-%m'),
SUM(A) AS Acount,
SUM(B) AS Bcount,
SUM(C) AS Ccount,
SUM(D) AS Dcount,
SUM(E) AS Ecount
FROM table
GROUP BY DATE_FORMAT(date, '%Y-%m')
您好,
您可以使用分组方式功能
SELECT
to_char(date,'YYYY-MM') as date,
CASE WHEN A=1 THEN COUNT(A) END as A ,
CASE WHEN B=1 THEN COUNT(B) END as B ,
CASE WHEN C=1 THEN COUNT(C) END as C ,
CASE WHEN D=1 THEN COUNT(D) END as D ,
CASE WHEN E=1 THEN COUNT(E) END as E
from table_name group by date order by date
此查询根据年份和月份对列进行分组,并提供结果从日期提取月份并按月份进行分组。最后计数。这是一个透视表,有关解决方案的示例,请参见
SELECT
to_char(date,'YYYY-MM') as date,
CASE WHEN A=1 THEN COUNT(A) END as A ,
CASE WHEN B=1 THEN COUNT(B) END as B ,
CASE WHEN C=1 THEN COUNT(C) END as C ,
CASE WHEN D=1 THEN COUNT(D) END as D ,
CASE WHEN E=1 THEN COUNT(E) END as E
from table_name group by date order by date