Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 具有多个选择和分组依据的查询_Mysql_Sql - Fatal编程技术网

Mysql 具有多个选择和分组依据的查询

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

我将计算总面积的记录,其中状态将不同,如“待定”、“发送信息”、“分组查询的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 = '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的多少倍

我认为它应该是
“发送信息”
而不是
“发送信息”。