首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从以下模式中提取SQL计数?

如何从以下模式中提取SQL计数?
EN

Stack Overflow用户
提问于 2012-03-24 15:21:30
回答 2查看 93关注 0票数 1

假设我有一个桌面会议,如下所示

代码语言:javascript
复制
M_DATE
M_RACE_NO
M_VENUE
M_ATHLETE

主键是日期、比赛编号、地点、运动员。每个日期/比赛编号/地点可以包含多个可能的运动员。假设对于特定的运动员,我希望提取日期、比赛编号、地点以及在该特定日期/比赛编号/地点参加比赛的运动员总数。

假设运动员博尔特参加了两个项目的比赛,总场分别为7和9,我想要的东西如下

代码语言:javascript
复制
2011-10-03, 4, NY, 7
2010-24-02, 5, SY, 9

我知道它看起来像是

代码语言:javascript
复制
SELECT M_DATE, M_RACE_NO, M_VENUE, SUM(...) FROM MEETING WHERE M_ATHLETE='Bolt'

我不知道SUM之后是什么

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-24 18:47:35

如果您的RDBMS支持此功能:

代码语言:javascript
复制
SELECT M_DATE, M_RACE_NO, M_VENUE,
   COUNT(*) OVER (PARTITION BY M_DATE, M_RACE_NO, M_VENUE)
FROM MEETING
WHERE M_ATHLETE='Bolt'

如果不是:

代码语言:javascript
复制
select m1.m_date, m1.m_race_no, m1.m_venue, m2.count_races
from meeting m1
join (select m_date, m_race_no, m_venue, count(*) count_races
      from meeting group by m_date, m_race_no, m_venue) m2
  on m1.m_date = m2.m_date
  and m1.m_race_no = m2.m_race_no
  and m1.m_venue = m2.m_venue
where m1.m_athlete = 'Bolt'
票数 3
EN

Stack Overflow用户

发布于 2012-03-24 19:12:20

代码语言:javascript
复制
SELECT 
    m.m_date
  , m.m_race_no
  , m.m_venue
  , COUNT(*) AS cnt 
FROM 
        meeting AS m
    JOIN
        meeting AS m2
            ON  m2.m_date    = m.m_date
            AND m2.m_race_no = m.m_race_no
            AND m2.m_venue   = m.m_venue
WHERE 
    m.m_athlete = 'Bolt'
GROUP BY
    m.m_date
  , m.m_race_no
  , m.m_venue
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9849922

复制
相关文章

相似问题

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