我有以下问题:
如果查询没有在select中询问B,会发生什么?我认为这会产生错误,因为聚合是根据select子句中的值计算的。
我有以下关系架构和查询:
假设R(A,B)是与单个元组的关系(NULL,NULL)。
SELECT A, COUNT(B)
FROM R
GROUP BY A;
SELECT A, COUNT(*)
FROM R
GROUP BY A;
SELECT A, SUM(B)
FROM R
GROUP BY A;
第一个查询返回NULL和0.我不确定第二个查询返回的内容。聚合COUNT(*)计算一个表中的元组数;但是,我不知道它对一个团队做了什么。第三个返回NULL,NULL
答案 0 :(得分:2)
评论太长了。
关于SELECT
和GROUP BY
的唯一规则是SELECT
中的未聚合列必须在GROUP BY
中(非常具体)例外)。
您可以在GROUP BY
中拥有从未出现在SELECT
中的列。那样就好。它不会影响组的定义,但多个行似乎在GROUP BY
列中具有相同的值。