首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQL中计算一个值在一列中存在的次数,如果它不是以两列为基础的,则为0

在SQL中计算一个值在一列中存在的次数,如果它不是以两列为基础的,则为0
EN

Stack Overflow用户
提问于 2020-06-08 23:38:06
回答 2查看 34关注 0票数 0

我在试着计算一支球队在他们的会议锦标赛中获胜的次数。下面列出了我正在使用的SQL表的一部分:

代码语言:javascript
运行
复制
   Season ConfAbbrev DayNum WTeamID LTeamID
1   2001    a_sun     121   1194    1144
2   2001    a_sun     121   1416    1240
3   2001    a_sun     122   1209    1194
4   2001    a_sun     122   1359    1239
5   2001    a_sun     122   1391    1273
6   2001    a_sun     122   1407    1416
7   2001    a_sun     123   1209    1359
8   2001    a_sun     123   1407    1391
9   2001    a_sun     124   1209    1407

如果我运行以下查询:

代码语言:javascript
运行
复制
SELECT season, confabbrev, wteamid, COUNT(wteamid) AS wins
INTO conf_tourney_wins
FROM mconferencetourneygames
GROUP BY season, confabbrev, wteamid
ORDER BY season, confabbrev;

我可以得到一支球队的胜利次数。问题是,我还希望没有赢得比赛的球队在wins列中列出0。我想我需要使用CASE语句,但还没能让它起作用。我试着使用类似这样的东西:

代码语言:javascript
运行
复制
WHEN lteamid NOT IN wteamid THEN 0

但这并不管用。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2020-06-09 00:15:58

如果有一个适用于团队的表格,戈登·林诺夫的答案是true.but,如果没有,你可以这样写:

代码语言:javascript
运行
复制
select grp.season, grp.confabbrev, grp.TeamID,count(g.wteamID)
from
    (SELECT season, confabbrev, wteamid as teamID
     FROM mconferencetourneygames
     GROUP BY season, confabbrev, wteamid
     union
     SELECT season, confabbrev, Lteamid as TeamID
     FROM mconferencetourneygames
     GROUP BY season, confabbrev, Lteamid
    ) grp
left outer join mconferencetourneygames m
on(g.season = grp.season and g.confabbrev = grp.confabbrev and g.wteamid = 
grp.teamid)
GROUP BY grp.season, grp.confabbrev, grp.TeamID
ORDER BY grp.season, grp.confabbrev;
票数 1
EN

Stack Overflow用户

发布于 2020-06-08 23:41:26

您需要从所有团队的列表开始。让我假设你在一个表中有这个。然后。。。left join。因此,这似乎做了您想要的--包括那些没有获胜的团队使用0的所有团队:

代码语言:javascript
运行
复制
SELECT ctw.season, ctw.confabbrev, t.wteamid, COUNT(c.teamid) AS wins
INTO conf_tourney_wins
FROM teams t LEFT JOIN
     mconferencetourneygames ctg
     ON ctg.wteamid = t.teamid
GROUP BY  ctw.season, ctw.confabbrev, t.wteamid
ORDER BY season, confabbrev;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62265798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档