首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql -通过计数选择行组?

mysql -通过计数选择行组?
EN

Stack Overflow用户
提问于 2012-01-22 07:54:59
回答 2查看 100关注 0票数 1

给出一个显示组织成员获得的奖励的表格,我试图列出在给定日期后获得三个或更多奖励的所有成员,并列出这些成员获得的所有奖励。我有一个查询可以正确地列出成员,但它只显示每个成员一行,并且我正在尝试查看他们的所有奖励。

在表格中,任何成员获得的每个奖励(“奖励”)都有一行,其中包含奖励类型和获得奖励的日期("Awarddate")。

这就是我所拥有的:

代码语言:javascript
复制
SELECT Membername, Award, Awarddate,COUNT(Membername) 
FROM awards 
WHERE Awarddate > '2011-06-30' 
GROUP BY Membername HAVING COUNT(Membername) > 2 

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2012-01-22 07:59:58

您可以使用GROUP_CONCAT()聚合函数:

代码语言:javascript
复制
SELECT Membername
     , COUNT(*)                                    AS NumberOfAwards
     , GROUP_CONCAT(Award ORDER BY Awarddate)      AS Awards
     , GROUP_CONCAT(Awarddate ORDER BY Awarddate)  AS AwardDates
FROM awards 
WHERE Awarddate > '2011-06-30' 
GROUP BY Membername 
HAVING COUNT(*) > 2 
票数 1
EN

Stack Overflow用户

发布于 2012-01-22 08:07:53

代码语言:javascript
复制
SELECT a.Membername, a.Award, a.Awarddate, Awardcount.Awards
FROM awards a
JOIN
  ( SELECT Membername, COUNT(*) AS Awards
    FROM awards
    WHERE Awarddate > '2011-06-30' 
    GROUP BY Membername 
    HAVING Awards > 2 ) Awardcount
ON a.Membername = Awardcount.Membername

编辑:要仅列出在给定日期之后获得的奖励,请按照ypercube的建议在此查询中再添加一行:

代码语言:javascript
复制
WHERE a.Awarddate > '2011-06-30'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8957799

复制
相关文章

相似问题

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