我们似乎从Google Big Query中的旧SQL和标准SQL中获得了两个不同的,互不兼容的结果。
这是我们的标准SQL查询...它给出了218,529行的答案。
SELECT DISTINCT(EID)
FROM test.ourBQtable
这是我们的遗留SQL查询...
SELECT COUNT(EID) AS Total, EID
FROM [ourBQproject:test.ourBQtable]
GROUP BY EID
ORDER BY Total DESC
这显示的结果如下表所示,但还显示了218,529行结果:
Total EID
376 jb+qLvHMm5JrMkNybAi6uC75FzgsGcNQhJ19IeWFDcQ=
352 JGqNBgicm+mpcYBS4K7AI2WXI3xaSgMkktb+7oOjjnQ=
如何使用看似重复的EID(其中376个如表中的一个案例所示) - 但是当使用DISTINCT(EID)命令时 - 行数不会减少? DISTINCT不应该过滤掉所有重复的行吗?我们真的有重复的行吗?
我们理解中缺少什么?
答案 0 :(得分:2)
您的代码似乎工作正常。
DISTINCT EID
表示EID
有218,529个不同的值。这应该为218,529个不同的EID
s。
当您使用GROUP BY
时,每个EID
都会获得一行。在这种情况下,您获得相同的数字。
尝试运行此查询:
SELECT COUNT(*) as num_rows, COUNT(DISTINCT EID) as num_eids
FROM test.ourBQtable;
这将显示表格中的行数以及EID
(忽略NULL
值)的不同值的数量。“
答案 1 :(得分:1)
以下两个查询是等效的,并返回相同的数字或行 - 每个唯一的EID一个
SELECT DISTINCT EID
FROM test.ourBQtable
和
SELECT EID
FROM test.ourBQtable
GROUP BY EID
这解释了为什么输出行的数量相同
现在,在第二个查询中添加了COUNT(EID)
SELECT COUNT(EID) AS Total, EID
FROM test.ourBQtable
GROUP BY EID
这不会改变输出行的数量,而是在test.ourBQtable
中添加相应EID
的行数(如果总结所有这些计数 - 您将获得原始表中的总行数)