如何基于4张表用SQL查询各职业数量并标记热门学位
问题原因
你当前的查询存在两个核心问题:
count(profession_id) > 2 as Popular写法返回的是布尔类型的true/false值,无法输出你需要的Popular Degree文本结果- 统计逻辑错误:你直接对
Profession表的profession_id计数,统计的是Profession表本身的记录数,而非该学位在业务关联表provider_profession中的实际出现次数
正确查询语句
SELECT p.profession, COUNT(pp.profession_id) AS profession_quantity, CASE WHEN COUNT(pp.profession_id) > 2 THEN 'Popular Degree' ELSE '' -- 可根据需求修改不满足条件时的默认输出值 END AS popular_tag FROM Profession p LEFT JOIN provider_profession pp ON p.profession_id = pp.profession_id GROUP BY p.profession_id, p.profession
改动说明
- 用
CASE WHEN条件分支实现自定义文本输出,满足计数>2的条件时返回指定的Popular Degree - 改用
LEFT JOIN关联两张表,统计每个学位在关联表中真实的出现次数,也不会漏掉没有关联记录的学位 - 分组时加入
profession_id字段,避免不同学位出现重名时聚合统计错误
内容的提问来源于stack exchange,提问作者user14815120
相关产品推荐
相关产品推荐

