我试图计算第1列中每个不同值的时间中位数,这会存储某种类型的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中所有值的中位数(我删除了此时不相关的额外条件)。我认为距离解决方案只有一步之遥,但我无法抓住它。
答案 0 :(得分: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 '<%';