>假设我有一个包含三列的数据库表,source
、dest
和data
。我想比较每个source
具有不同dest
的记录数。 我可以通过如下方式获取原始数字:
SELECT source, dest, COUNT(*) FROM table
GROUP BY source, dest
并获得类似于
source dest COUNT(*)
A x 100
A y 100
B x 75
B y 78
C x 200
C y 0
不过,我想要的是比较每个source
的不同dest
,也许通过标准差:结果看起来像:
source SD
A 0
B 1.5
C 100
我什至可以假设整个表中只有两个可能的dest
值,并让它只报告两者之间的差异:
source DIFF
A 0
B 3
C 200
有什么方法可以在SQL中做到这一点吗?我的目标是ElasticSearch SQL,但我很乐意接受任何输入,我可以尝试翻译成该方言。
你似乎想要-
:
SELECT source, MAX(cnt) - MIN(cnt)
FROM (SELECT source, dest, COUNT(*) as cnt
FROM table
GROUP BY source, dest
) t
GROUP BY source;
当您只有两个值时,标准差实际上没有意义。