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

SQL查询需求:筛选图书数量多于DVD数量的用户

解决用户图书数量大于DVD数量的筛选需求

嘿,我来帮你搞定这个SQL筛选问题!先把你的需求再捋一遍:我们要找出图书总数量大于DVD总数量的用户姓名,同时要处理两种特殊情况——只有单条记录的用户,以及有两条记录但DVD更多的用户要排除。

核心思路:按用户分组,聚合计算两类物品的数量后比较

假设你的数据表结构大概是这样的(字段名如果不一样,你可以对应替换):

  • names:用户姓名
  • item_type:物品类型(值为'book'或'DVD')
  • quantity:该类型物品的数量

下面这个SQL语句就能直接满足你的需求:

SELECT names
FROM your_table_name  -- 这里替换成你的实际表名
GROUP BY names
HAVING 
  SUM(CASE WHEN item_type = 'book' THEN quantity ELSE 0 END) 
  > 
  SUM(CASE WHEN item_type = 'DVD' THEN quantity ELSE 0 END);

为什么这个语句能覆盖所有情况?

  • 只有图书记录的用户:DVD的总数量会被计算为0,图书数量大于0,自然满足book数量 > DVD数量,会被筛选出来
  • 只有DVD记录的用户:图书总数量是0,0不大于DVD数量,会被自动排除
  • 有两条记录但DVD更多的用户:聚合后的DVD总数量大于图书,HAVING条件不满足,直接排除
  • 有两条记录且图书更多的用户:聚合后的图书数量大于DVD,会被选中

如果每条记录对应单个物品(quantity都是1)

如果你的表中每条记录代表一个单独的物品,quantity字段都是1,那可以用COUNT代替SUM,写法更简洁:

SELECT names
FROM your_table_name
GROUP BY names
HAVING 
  COUNT(CASE WHEN item_type = 'book' THEN 1 END) 
  > 
  COUNT(CASE WHEN item_type = 'DVD' THEN 1 END);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:45:51