【问题标题】:TSL / SQL PERCENTILE_CONT should return 1 recordTSL / SQL PERCENTILE_CONT 应该返回 1 条记录
【发布时间】:2013-06-21 15:19:30
【问题描述】:
我正在处理一个 T-SQL 查询(我正在运行一个 SQL Server 数据库),它应该从值列表中计算中值。查询如下所示:
SELECT
PERCENTILE_CONT(0.5) OVER (ORDER BY age) as Age
FROM
peopleDB
WHERE
<expressions>;
数据库有 100 行。该查询返回中位数(相同的值)100 次,但我的目标是只返回一次。我一直在尝试以多种方式使用DISTINCT 和GROUP BY,但每次都会返回语法错误。数据库目前不支持DISTINCT。
有没有可能我忽略了一些明显的东西?
【问题讨论】:
标签:
sql
sql-server
group-by
distinct-values
percentile
【解决方案1】:
我遇到了同样的问题,阅读这篇文章帮助我实现了解决方案。所以你的问题的 SQL 语法(因为我不熟悉 TSQL)是:
SELECT
Distinct PERCENTILE_CONT(0.5) within group (ORDER BY age) over () as Age
FROM
peopleDB
WHERE
<expressions>;
为我工作!
【解决方案2】:
尝试一个空的 over 子句。
SELECT
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY <column>) OVER () as Age
FROM
peopleDB
WHERE
<expressions>;
【解决方案3】:
我从未听说过 TSL。但是,以下其中一项可能有效:
SELECT PERCENTILE_CONT(0.5) OVER (ORDER BY age) as Age
FROM peopleDB
WHERE <expressions>
limit 1;
SELECT top 1 PERCENTILE_CONT(0.5) OVER (ORDER BY age) as Age
FROM peopleDB
WHERE <expressions>;
SELECT max(PERCENTILE_CONT(0.5) OVER (ORDER BY age)) as Age
FROM peopleDB
WHERE <expressions>;
select max(age)
from (SELECT top 1 PERCENTILE_CONT(0.5) OVER (ORDER BY age) as Age
FROM peopleDB
WHERE <expressions>
) t