SQL新手,请原谅noob问题
票
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)。
答案 0 :(得分: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语句,它只是一个例子。)