【问题标题】:Frequency of distinct values SQL不同值 SQL 的频率
【发布时间】:2021-08-06 11:50:30
【问题描述】:

有没有办法 (1) 将一列中的值(以秒为单位)转换为分钟,然后 (2) 获得不同值的频率/出现次数(分钟)?

我将它用于第 1 步:

SELECT
  ROUND(tripduration/60) AS duration
FROM
  TABLE

这给了我以分钟为单位的持续时间,如下所示:

duration
11
16
11
...
11

但是对于第 2 步,我如何将值出现频率的总和按降序排列如下:

duration frequency
11 4000
13 3900
16 2500
... ...
14 230

【问题讨论】:

    标签: count google-bigquery distinct frequency


    【解决方案1】:

    如果我理解正确,您可以使用聚合:

    SELECT ROUND(tripduration/60) AS duration, COUNT(*) as frequency
    FROM TABLE
    GROUP BY ROUND(tripduration/60)
    ORDER BY COUNT(*) DESC;
    

    【讨论】:

    • 谢谢!但是,我收到错误“SELECT 列表表达式引用在 [1:14] 处既未分组也未聚合的列 tripduration”。我想知道这是否与分区有关? tripduration 是一个整数,我只需将其除以 60 即可在分钟内得到它。
    • @mabiel 。 . .这在几乎任何数据库中都应该没问题,但您可以尝试GROUP BY duration。您仍然没有在问题上提供数据库标签。
    【解决方案2】:

    如果您收到有关 tripduration 列的错误,请尝试以下操作:

    SELECT duration, frequency FROM (SELECT duration , COUNT(*) as frequency FROM (SELECT ROUND(tripduration/60,2) AS duration FROM TABLE) d GROUP BY duration) t ORDER BY frequency DESC;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多