SQL需求:计算指定行Fee列加权总和(Adult乘200/Child乘50)
完善SQL实现会员费分类求和
没问题,我来帮你把这个SQL语句补全。你的需求是针对Hillcrest俱乐部的不同会员类型,给Adult的费用乘以200、Child的费用乘以50,最后算出对应总费用对吧?
方案1:计算所有会员的总费用(不分类型)
如果你需要的是把Adult和Child计算后的费用加起来的总金额,可以用CASE语句区分类型应用不同乘数,再用SUM()汇总:
SELECT SUM(CASE WHEN Type = 'Adult' THEN Fee * 200 WHEN Type = 'Child' THEN Fee * 50 ELSE 0 -- 兜底处理其他未定义的类型,避免NULL干扰求和结果 END) AS TotalMembershipFee FROM fees WHERE Clubname = 'hillcrest';
这个语句会遍历符合条件的所有记录,根据Type字段自动匹配对应的计算规则,最后把所有结果加总得到总会员费。
方案2:按类型分别显示计算后的费用
如果你需要同时看到Adult和Child各自的总费用,可以保留GROUP BY Type,调整后的SQL如下:
SELECT Type, SUM(CASE WHEN Type = 'Adult' THEN Fee * 200 WHEN Type = 'Child' THEN Fee * 50 ELSE 0 END) AS MembershipFee FROM fees WHERE Clubname = 'hillcrest' GROUP BY Type;
执行后会返回两行数据,分别显示Adult和Child类型的总费用。
内容的提问来源于stack exchange,提问作者T.Ryan
相关产品推荐
相关产品推荐

