记录数的查找比率



>假设我有一个包含三列的数据库表,sourcedestdata。我想比较每个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;

当您只有两个值时,标准差实际上没有意义。

最新更新