SQL新手,请原谅菜鸟问题
选票
vote_id vote_date
1 2013-08-11
2 2013-08-12
3 2013-08-12
4 2013-08-12
5 2013-08-13
6 2013-08-14
我想选择最受欢迎的日期(2013-08-12)以及在该日期投了多少票(3)。
这是获得指定结果的一种方法:
SELECT v.vote_date
, COUNT(1) AS votes_cast
FROM votes v
GROUP
BY v.vote_date
ORDER
BY votes_cast DESC
, v.vote_date DESC
LIMIT 1
该GROUP BY
子句允许将多组行聚合成一行。在此示例中,我们正在“分组”具有相同值的行vote_date
。该COUNT
函数是一个聚合函数,它对组内的所有行进行操作,并为组返回单个值。(COUNT 从零开始,对于表达式中具有非空值的每一行,计数都加一。)您也可以在此查询中使用SUM(1)
代替。COUNT(1)
返回指定序列中的ORDER BY
行。在此示例中,我们想要具有最高 COUNT 值的行。因此,我们按降序对该表达式上的行进行排序。如果两个或多个 vote_date 具有相同的“最高”计数,我们将首先返回最新的 vote_date。
该LIMIT n
子句限制返回的行数,因此只n
返回行。
(这不是返回指定结果的唯一 SQL 语句,它只是一个示例。)