0
테이블에서 중앙값을 찾는 쿼리를 작성했습니다. 표는 내가 성공적으로 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));
그러나 골재를 사용하여이 106 자연수의 중간을 찾기 위해 쿼리를 실행 (106)
CREATE TABLE med
AS (SELECT rs
FROM (SELECT rownum rs
FROM employees
WHERE employee_id<=106));
1에서 연속 자연수를 포함하는 하나의 열을했다 이 같은 하위 쿼리를 사용하지 않고 기능 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 등의 출력을 제공? 하위 쿼리와 함께 첫 번째 쿼리에, 당신은 실행 하위 쿼리 집계 함수없이 두 번째 쿼리에 값 53, 54사이의 평균을 계산되어 있지만 separatly 각각의 값에 수행되기 때문이다
, 샘플 데이터 및 예상 출력을 제공하십시오. – Mansoor
@Mansoor 테이블에는 rs라는 단일 열이 있으며 1부터 106까지의 연속적인 자연수로 구성됩니다. – PiyushM
열 데이터 형식? – jarlh