sql - 查找记录数的比率

标签 sql elasticsearch elastic-stack

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

相关文章:

php - MySQL 复杂连接

sql - 如何根据 SQL Server 中是否存在情况来选择行?

PHP:未选择数据库

mysql - 查询时间戳以仅选择每个组的最近行

amazon-web-services - Elasticsearch 尝试将字段 [null] 解析为对象,但找到了一个具体值

elasticsearch - 设置索引期间缺失字段的默认值

elasticsearch - 如何在Logstash中处理JSON

elasticsearch - 为搜索和索引选择正确的解决方案

c# - 在Elasticsearch中执行http放置

java - Elastic Stack - 具有完整 JSON 请求和响应的 REST API 日志记录