You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CASE表达式修正请求:需按指定CASE语句对SQL查询结果分组

修正后的SQL解决方案

问题核心

原CASE语句存在两个关键问题:

  • 大小写匹配失效:多数数据库的LIKE默认区分大小写,导致含大写关键词(如Cafe、SCHOOL)的商家名称无法被匹配,错误归为other。
  • 未实现分组聚合:原SQL仅返回单条记录的分类,没有按分类完成分组汇总,不符合"分组"需求。

修正后的代码示例

1. 基础匹配修正(解决大小写问题)

统一转小写后匹配,同时调整条件顺序避免关键词覆盖:

SELECT 
  business_name,
  CASE
    WHEN LOWER(business_name) LIKE '%school%' THEN 'School'
    WHEN LOWER(business_name) LIKE '%caf%' THEN 'Cafe' -- 优先匹配咖啡类,避免被餐厅关键词覆盖
    WHEN LOWER(business_name) LIKE '%restaurant%' THEN 'Restaurant'
    ELSE 'Other'
  END AS business_classification
FROM sf_restaurant_health_violations;

2. 分组统计(按分类汇总)

如果需要按分类统计商家数量,添加GROUP BY和聚合函数:

SELECT 
  CASE
    WHEN LOWER(business_name) LIKE '%school%' THEN 'School'
    WHEN LOWER(business_name) LIKE '%caf%' THEN 'Cafe'
    WHEN LOWER(business_name) LIKE '%restaurant%' THEN 'Restaurant'
    ELSE 'Other'
  END AS business_classification,
  COUNT(DISTINCT business_name) AS business_count -- 统计不同商家的数量
FROM sf_restaurant_health_violations
GROUP BY business_classification
ORDER BY business_count DESC;

关键说明

  • LOWER(business_name)将名称统一转为小写,确保匹配不受大小写影响。
  • 条件顺序可按需调整:若存在同时含多个关键词的名称(如Cafe Restaurant),会优先匹配排在前面的规则。
  • 部分旧版本数据库不支持用别名分组,可将GROUP BY后的字段替换为完整的CASE表达式。

内容的提问来源于stack exchange,提问作者Thedh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:45:40