0
我在寫一個查詢來查找表中的中位數。該表有一個單一的柱包括從1個連續自然數至106集合函數不能按預期工作
CREATE TABLE med
AS (SELECT rs
FROM (SELECT rownum rs
FROM employees
WHERE employee_id<=106));
我成功執行查詢以找到此106張自然數的中值53.5
SELECT AVG(median)
FROM (
SELECT a.rs median
FROM med a,
med b
GROUP BY a.rs
HAVING SUM(CASE
WHEN b.rs<=a.rs THEN 1
ELSE 0
END)>=(COUNT(*)/2)
AND SUM(CASE
WHEN b.rs>=a.rs THEN 1
ELSE 0
END)>=(COUNT(*)/2));
但在使用聚合不使用這樣的子查詢功能AVG:
SELECT AVG(a.rs) median
FROM med a,
med b
GROUP BY a.rs
HAVING SUM(CASE
WHEN b.rs<=a.rs THEN 1
ELSE 0
END)>=(COUNT(*)/2)
AND SUM(CASE
WHEN b.rs>=a.rs THEN 1
ELSE 0
END)>=(COUNT(*)/2)
那麼它不會得到所需要的輸出53.5,而它給人的53,54,爲什麼這麼輸出?
,提供您的樣本數據和預期輸出。 – Mansoor
@Mansoor該表有一個名爲rs的單個列,它包含從1到106的連續自然數。 – PiyushM
列數據類型? – jarlh