【发布时间】:2013-07-20 18:24:37
【问题描述】:
我是第一次学习 SQL,我被要求做这些查询。
我写了这些语句来解决问题,它们有效,但它们不使用group by。
有人可以建议我如何改变它吗?他们应该只使用group by 或者where,我认为这个任务不应该使用更高级的东西。
总统的最新出生日期是什么时候? (最年轻的总统)
SELECT birth, first_name, last_name
FROM sampdb.president
WHERE birth= (select MAX(birth) FROM sampdb.president);
+------------+------------+-----------+
| birth | first_name | last_name |
+------------+------------+-----------+
| 1946-08-19 | William J. | Clinton |
+------------+------------+-----------+
1 row in set (0.00 sec)
SELECT birth, first_name, last_name
FROM sampdb.president
WHERE birth>=ALL(SELECT MAX(birth) FROM sampdb.president);
+------------+------------+-----------+
| birth | first_name | last_name |
+------------+------------+-----------+
| 1946-08-19 | William J. | Clinton |
+------------+------------+-----------+
1 row in set (0.00 sec)
最早的? (最年长的总统)
SELECT birth, first_name, last_name
FROM sampdb.president
WHERE birth=(SELECT MIN(birth) FROM sampdb.president);
+------------+------------+------------+
| birth | first_name | last_name |
+------------+------------+------------+
| 1732-02-22 | George | Washington |
+------------+------------+------------+
1 row in set (0.00 sec)
【问题讨论】:
-
那么,问题是什么?如何使用
GROUP BY重写查询? -
您可以将
ALL版本简单地编写为:... WHERE birth >= ALL (SELECT birth FROM sampdb.president),否则您的查询似乎很好。我认为没有必要使用GROUP BY -
我认为在您的示例中不需要
GROUP BY语句,您正在根据 1 个条件选择 1 条记录。否则你的查询是正确的。 -
没错,有人告诉我,我需要对这个查询使用 group by。但正如我已经表明的那样,没有必要。但是,如果我确实使用了 group by,我会使用什么 group by 来获得与上面显示的相同的结果?
-
这是一个措辞糟糕的练习。它是在聚合函数练习和分组练习中,所以这是我的误解。