0

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)。

4

1 回答 1

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 语句,它只是一个示例。)

于 2013-08-12T16:06:08.487 回答