【问题标题】:SQL find median of col2 for every distinct value of col1SQL 为 col1 的每个不同值查找 col2 的中值
【发布时间】:2016-07-12 17:41:40
【问题描述】:

我正在尝试计算 column1 中每个不同值的时间中位数,该值存储某种 id。第二列以毫秒为单位存储时间。我想计算每个 id 的记录中位数。我有这个:

Declare @Median varchar(max)
SELECT @Median = PERCENTILE_CONT(0.5)
WITHIN GROUP (ORDER BY ExecTime) OVER () 
FROM 
(
    SELECT ExecTime
    FROM logs
    WHERE Message Like '<%'
) AS median 
SELECT @Median as Median --, Name

计算 col2 中所有值的中位数(我删除了此时不相关的额外条件)。我认为距离解决方案仅一步之遥,但我无法抓住它。

【问题讨论】:

    标签: sql sql-server tsql median


    【解决方案1】:

    我认为您正在寻找partition by 子句:

    SELECT DISTINCT column1,
           PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ExecTime) OVER (PARTITION BY column1) as median 
    FROM logs l
    WHERE l.Message Like '<%';
    

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 2019-05-22
      相关资源
      最近更新 更多