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

SQL查询需求:依据range字段规则生成items分类结果

解决这个SQL分类问题的思路和查询语句

首先我得从你给出的输入和输出反推分类规则,先明确每个result对应的range特征:

  • conv:该item的range值仅包含38和/或451(没有其他任何数值)
  • ms:该item的range里存在110、111、112、115这类数值,且不包含1或2;同时不属于conv的范畴
  • common:不属于上面两类的情况(也就是包含1或2,同时还有其他数值)

基于这个规则,我们可以用聚合函数统计每个item的range满足的条件,再用CASE语句生成对应的result。

最终SQL查询语句

SELECT 
    items,
    CASE
        -- 判断是否为conv:range只有38或451
        WHEN COUNT(DISTINCT CASE WHEN range NOT IN (38, 451) THEN range END) = 0 THEN 'conv'
        -- 判断是否为ms:存在110/111/112/115,且没有1或2
        WHEN COUNT(DISTINCT CASE WHEN range IN (110, 111, 112, 115) THEN range END) > 0
             AND COUNT(DISTINCT CASE WHEN range IN (1, 2) THEN range END) = 0 THEN 'ms'
        -- 剩下的都是common
        ELSE 'common'
    END AS result
FROM 
    your_table_name
GROUP BY 
    items
ORDER BY 
    items;

代码解释

  1. 判断conv:用COUNT(DISTINCT CASE...)统计不在(38,451)里的range值数量,如果为0,说明所有range都是38或451,标记为conv。
  2. 判断ms:首先统计存在110/111/112/115的数量大于0(说明有这类数值),同时统计1或2的数量为0(说明没有小数值),满足这两个条件就标记为ms。
  3. common:剩下的所有情况都归为common,比如包含1/2同时还有其他数值的item1、item3。

你只需要把your_table_name替换成你实际的表名即可运行,这个查询会按item分组,输出你期望的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:06:39