mysql - 按计数选择行组?

标签 mysql

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

对于任何成员(member)获得的每个奖励(“奖励”),表格中都有一行,包括奖励类型和获得日期(“奖励日期”)。

这是我所拥有的:

SELECT Membername, Award, Awarddate,COUNT(Membername) 
FROM awards 
WHERE Awarddate > '2011-06-30' 
GROUP BY Membername HAVING COUNT(Membername) > 2 

建议?

最佳答案

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

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 

关于mysql - 按计数选择行组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957799/

相关文章:

mysql - Solr:从 MySQL 持续迁移

带有参数的Mysql不起作用

PHP 类实例写入 MySQL 数据库

mysql - 将复杂的 count() 查询结果插入表中

php - unix 时间戳和 php

Mysql Fetch 按日期计算最后 5 天,剩余天数按第 6 天计算

MySQL错误: Can't update table 'tbl' in stored function/trigger because it is already used by statement which invoked this stored function/trigger

mysql - 如何在 mysql 中转换和使用 varchar 数据类型作为日期时间

mysql - 连接两个表 SQL

MySQL 准备好的语句过多