我为客户做了一个系统,他们可以提名同事做得很好。每个人每年有12项提名。
所以我有一个带有表提名的数据库,包括商店,id,提名者(id),提名(id),理由和日期。
我还有一个表用户,用户存储用户数据,如提名,收到的总数,身份证,电子邮件等。
所以我正在创建一个页面,您可以从中提取报告。
您可以在此处选择开始日期和结束日期以及您想要的记录数量。
SQL查询如何确定谁在指定日期之间获得最多提名?
我根本不是SQL大师...所以任何帮助都会非常感激。
经过一些研究后,我设法找出COUNT(*)是要走的路......但是不想为在指定日期之间提名的每个用户运行查询...并对其进行排序方式可能是一个问题。
请任何帮助都会很棒。
答案 0 :(得分:3)
select nominator, count(*)
from yourTable
where nominatedDate >= '1 Jan 2013' and nominatedDate <= '31 Jan 2013'
group by nominator
当您执行聚合函数(如COUNT.MIN,MAX,AVG)时,您需要将它们应用于所选的每一行,这将在输出中只提供一行,或者将您要生成的GROUP BY项应用于子-totals。在这种情况下,对于表中的Nominator的每个值,我们得到Nominator值,以及包含该值的行数。
Where子句将计算的行限制为nominatedDate在给定范围内的行。你可以把AND和OR其他测试(它已经有一个和)。