请求优化SQL脚本:按userName分组统计胜场数
调整后的SQL脚本及说明
要生成符合需求的简洁报表,核心是先判定用户的每一次预测是否命中获胜队伍,再按userName和weekNum分组统计获胜次数。
关键逻辑说明
- 获胜判定:当用户选择的队伍(
p.pickID)是主场队且主场得分更高,或是客场队且客场得分更高时,记为一次有效获胜 - 分组统计:按
userName和weekNum分组,统计符合获胜条件的记录数量
最终SQL脚本
SELECT u.userName, s.weekNum, COUNT(CASE WHEN (p.pickID = s.homeID AND s.homeScore > s.visitorScore) OR (p.pickID = s.visitorID AND s.visitorScore > s.homeScore) THEN 1 END) AS `#of wins` FROM nflp_picks p INNER JOIN nflp_users u ON p.userID = u.userID INNER JOIN nflp_schedule s ON p.gameID = s.gameID WHERE s.weekNum = 6 AND u.userName <> 'admin' GROUP BY u.userName, s.weekNum ORDER BY u.userName;
补充说明
CASE语句精准筛选出获胜的预测记录,未命中的记录会返回NULL,而COUNT()不会统计NULL值,确保统计结果准确- 分组时保留
weekNum,即使后续扩展到多周数据,报表统计逻辑依然适用 - 最终结果按
userName排序,便于查看和整理
内容的提问来源于stack exchange,提问作者B Brown
相关产品推荐
相关产品推荐

