如何编写SQL查询对比字段特定值数量并筛选好评多于差评的酒店
符合需求的SQL查询语句
你可以直接使用以下查询语句,替换其中的你的表名为实际业务中的表名即可运行:
SELECT hotel FROM 你的表名 GROUP BY hotel HAVING SUM(CASE WHEN opinion = 'good' THEN 1 ELSE 0 END) > SUM(CASE WHEN opinion = 'bad' THEN 1 ELSE 0 END);
逻辑说明:按酒店名称分组后,分别统计每个酒店good和bad评价的总次数,通过HAVING条件过滤出good评价次数多于bad的酒店,运行后刚好匹配你预期的输出结果hotelA。
SQL能力提升学习资源推荐
- 基础入门:优先看你常用数据库的官方文档基础章节,比如MySQL、PostgreSQL的官方基础教程,语法规则和示例都非常权威,适合打牢基础
- 实战练习:可以刷专门的SQL刷题平台题目,从单表查询、分组聚合等简单题型开始,逐步进阶到多表关联、窗口函数、复杂子查询类题目,刷到中等难度就可以覆盖绝大多数日常业务场景需求
- 进阶优化:学习执行计划查看方法、索引设计原则、慢查询优化技巧,结合实际业务场景练习写高效的查询语句,避免出现性能问题
- 底层逻辑学习:可以看专门讲解SQL底层执行逻辑的书籍,搞清楚SQL的执行顺序、数据处理的底层原理,能帮你避开很多常见的逻辑错误
内容的提问来源于stack exchange,提问作者FatiguedFlamingo
相关产品推荐
相关产品推荐

