假设我有一个数据库表,其中包含三列source
,dest
和data
。我想比较每个dest
具有不同source
的记录数。我可以通过以下方式获取原始数据:
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;
当只有两个值时,标准偏差实际上没有意义。
关于sql - 查找记录数的比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58107056/