Mysql 具有多个选择和分组依据的查询
我将计算总面积的记录,其中状态将不同,如“待定”、“发送信息”、“分组查询的PTP”和多个select查询,但结果未得到,请帮助我Mysql 具有多个选择和分组依据的查询,mysql,sql,Mysql,Sql,我将计算总面积的记录,其中状态将不同,如“待定”、“发送信息”、“分组查询的PTP”和多个select查询,但结果未得到,请帮助我 SELECT AREA, SUM(CASE WHEN STATUS = 'PENDING' THEN 1 ELSE 0 END) AS PENDING, SUM(CASE WHEN STATUS = 'SENT INFO.' THEN 1 ELSE 0 END) AS cnt, SUM(CASE WHEN STATUS
SELECT AREA,
SUM(CASE WHEN STATUS = 'PENDING' THEN 1 ELSE 0 END) AS PENDING,
SUM(CASE WHEN STATUS = 'SENT INFO.' THEN 1 ELSE 0 END) AS cnt,
SUM(CASE WHEN STATUS = 'PTP' THEN 1 ELSE 0 END) AS PTP
FROM prospectmaster
WHERE ZONE = 'AHMEDABAD'
GROUP BY AREA;
我的问题是:
SELECT AREA,
(SELECT COUNT( * ) FROM prospectmaster WHERE ZONE = 'AHMEDABAD' && STATUS = 'PENDING' GROUP BY AREA) AS PENDING,
(SELECT COUNT( * ) FROM prospectmaster WHERE ZONE = 'AHMEDABAD' && STATUS = 'SENT INFO.' GROUP BY AREA) AS CNT
FROM prospectmaster
WHERE ZONE = 'AHMEDABAD' GROUP BY AREA
我想知道这种结果
AREA PENDING INFO SENT PTP
AHMEDABAD 1 2 1
GANDHINAGAR 1 5 4
KHEDA 3 10 9
我想在查询中有些问题,但我不明白。所以,请帮助我
SELECT AREA,
SUM(CASE WHEN STATUS = 'PENDING' THEN 1 ELSE 0 END) AS PENDING,
SUM(CASE WHEN STATUS = 'SENT INFO.' THEN 1 ELSE 0 END) AS cnt,
SUM(CASE WHEN STATUS = 'PTP' THEN 1 ELSE 0 END) AS PTP
FROM prospectmaster
WHERE ZONE = 'AHMEDABAD'
GROUP BY AREA;
如果
状态
具有“发送信息”。使用
在数据库中记录,因为这是mysql,您只需执行以下操作:
SELECT AREA,
SUM(if(STATUS='PENDING',1,0)) AS PENDING,
SUM(if(STATUS='SENT INFO',1,0)) AS "INFO SENT",
SUM(if(STATUS='PTP',1,0)) AS PTP
FROM prospectmaster
WHERE ZONE = 'AHMEDABAD'
GROUP BY AREA;
SELECT
AREA,
SUM(STATUS = 'PENDING') AS PENDING,
SUM(STATUS = 'SENT INFO.') AS SENT_INFO,
SUM(STATUS = 'PTP') AS PTP
FROM prospectmaster
WHERE ZONE = 'AHMEDABAD'
GROUP BY AREA
这是因为在mysql中,true为1,false为0,所以求和一个条件将计算其true的多少倍我认为它应该是
“发送信息”
而不是“发送信息”。