📅  最后修改于: 2023-12-03 15:10:15.962000             🧑  作者: Mango
考虑下面的 SQL 查询:
SELECT C.name, COUNT(*)
FROM Customers C, Orders O
WHERE C.cid = O.cid
GROUP BY C.name
HAVING COUNT(*) = (
SELECT MAX(COUNT(*))
FROM Orders
GROUP BY cid);
以下哪个选项是正确的?
A. 它返回每个顾客的名称和他们的订单数量。 如果有一个顾客多次下单 则计数器为1。 B. 它返回所有顾客名称与他们的订单数量,其中一次下单也会增加计数器。 C. 它返回每个顾客的名称和他们的订单数量。 如果有一个顾客多次下单,则它仅计数一次。 D. 它将引发运行时错误。
这个问题是关于 SQL 查询的一些考察。首先,我们需要从查询语句的 SQL 语法来看。「SELECT」是用来选取数据表中的字段的,「FROM」则是选取数据表,「WHERE」是条件选择,「GROUP BY」则会将所选的字段按照 GROUP BY 字段进行分类,并且对每个组做集合函数的操作,这里使用了 COUNT 函数。最后,HAVING 是用来选择 GROUP BY 分组后,进行过滤的,使用了一个子查询,去查询最大的订单数量。
根据上述分析,我们可以得到以下答案:
C. 它返回每个顾客的名称和他们的订单数量。 如果有一个顾客多次下单,则它仅计数一次。
查询语句有以下几个部分: