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

如何修改SQL代码新增列判断员工是否满足奖励条件(订单数>60)

解决方案

方式一:基于现有视图修改查询

原有代码通过HAVING仅筛选出订单数超60的员工,且未生成标记列。修改后的查询会返回所有1997年有订单的员工,并新增奖励标记列:

Select 
    first_name, 
    last_name, 
    count(employee_id) as orders_count,
    CASE 
        WHEN count(employee_id) > 60 THEN '应得奖励'
        ELSE '不应得奖励'
    END as 奖励标记
From Award_1997
Where order_date >= '1997-01-01' and order_date <='1997-12-31'
Group by first_name, last_name

方式二:直接关联表查询(更高效)

无需提前创建视图,直接关联员工表和订单表,还能覆盖1997年无订单的员工:

Select 
    e.first_name, 
    e.last_name, 
    COUNT(o.order_id) as orders_count, -- 用订单主键统计更准确
    CASE 
        WHEN COUNT(o.order_id) > 60 THEN '应得奖励'
        ELSE '不应得奖励'
    END as 奖励标记
From employees e
Left Join orders o 
    on e.employee_id = o.employee_id
    and o.order_date between '1997-01-01' and '1997-12-31'
Group by e.first_name, e.last_name

关键修改说明

  • 移除HAVING子句:确保所有符合分组条件的员工都被返回,而非仅筛选订单数超60的记录
  • 新增CASE WHEN表达式:根据订单数动态生成奖励标记列,满足需求中的判断规则
  • 可选优化:使用Left Join可包含1997年无订单的员工(此时订单数为0,标记为“不应得奖励”);若只需统计有订单的员工,替换为Inner Join即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:55:07