繁体   English   中英

如何在GROUP BY CASE之后集成HAVING子句

[英]How to integrate the HAVING clause after GROUP BY CASE

我的以下查询工作正常,但需要过滤掉状态设置为“无效”或“已存档”的记录中的年龄。 我的表名为“联系人”,并具有一个状态列和一个年龄列。 其他状态为“活动”,“跟进”和“已完成”。

SELECT CASE
  WHEN age BETWEEN '0' AND '18' THEN '18 and Under'   
  WHEN  age BETWEEN '19' AND '30' THEN '19 to 30'   
  WHEN age BETWEEN '31' AND '40' THEN '31 to 40'   
  WHEN  age BETWEEN '41' AND '50' THEN '41 to 50'   
  WHEN age BETWEEN '51' AND '60' THEN '51 to 60'                             
  ELSE '61 and Older'
  END
 ,Count(id)
FROM  Contact
GROUP BY 
CASE
  WHEN age BETWEEN '0' AND '18' THEN '18 and Under'   
  WHEN  age BETWEEN '19' AND '30' THEN '19 to 30'   
  WHEN age BETWEEN '31' AND '40' THEN '31 to 40'   
  WHEN  age BETWEEN '41' AND '50' THEN '41 to 50'   
  WHEN age BETWEEN '51' AND '60' THEN '51 to 60'                             
  ELSE '61 and Older'
END

我试图按如下方式集成HAVING子句,但不确定将其放在何处:

HAVING status NOT IN('Invalid', 'Archived')

我尝试的任何地方都会出现错误。 任何指向正确方向的帮助将不胜感激。

试试这个sqlFiddle示例

SELECT CASE
        WHEN age BETWEEN  '0' AND '18' THEN '18 and Under'   
        WHEN age BETWEEN '19' AND '30' THEN '19 to 30'   
        WHEN age BETWEEN '31' AND '40' THEN '31 to 40'   
        WHEN age BETWEEN '41' AND '50' THEN '41 to 50'   
        WHEN age BETWEEN '51' AND '60' THEN '51 to 60'                             
        ELSE '61 and Older'
       END as age_range,
       status,
       Count(id) as `count`
FROM  Contact
WHERE status NOT IN ('Invalid','Archived')
GROUP BY age_range,status;

或者,如果您希望使用HAVING status NOT IN ('Invalid','Archived') ,则可以使用以下内容,即与上面相同的最终结果。 sqlfiddle示例

SELECT CASE
        WHEN age BETWEEN  '0' AND '18' THEN '18 and Under'   
        WHEN age BETWEEN '19' AND '30' THEN '19 to 30'   
        WHEN age BETWEEN '31' AND '40' THEN '31 to 40'   
        WHEN age BETWEEN '41' AND '50' THEN '41 to 50'   
        WHEN age BETWEEN '51' AND '60' THEN '51 to 60'                             
        ELSE '61 and Older'
       END as age_range,
       status,
       Count(id) as `count`
FROM  Contact
GROUP BY age_range,status
HAVING status NOT IN ('Invalid','Archived');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM