단일 쿼리에서 중간 값을 얻는 관리 솔루션을 보지 못했습니다. 나는 임시 테이블을 신경 쓰지 않지만 필요하지 않으면 훌륭합니다! 내가 생각해 낸 것은 다음과 같습니다.
SELECT AVG(profit) median, nofitems FROM(
SELECT x.profit, SUM(SIGN(1.0-SIGN(y.profit-x.profit))) diff, count(*) nofitems, floor(count(*)+1/2)
FROM brand_prof x, brand_prof y
GROUP BY x.profit
HAVING SUM(SIGN(1.0-SIGN(y.profit-x.profit))) = floor((COUNT(*)+1)/2)
OR SUM(SIGN(1.0-SIGN(y.profit-x.profit))) = ceiling((COUNT(*)+1)/2)
) x;
나는 이것을 짝수 세트로 테스트하고 정답을 얻었습니다. brand_prof는 brand_name과 profit, 10 진수 값의 두 열입니다. 이것이 정수 값이라면 "ceiling ((CAST COUNT (*) AS DECIMAL) ..."을 테스트해야 할 수도 있습니다. 테스트 한 것보다 더 많은 것입니다. 직교 곱을 사용하고 부호의 합계를 나타내는 멋진 아이디어는 안타깝게도 저자를 잊어 버렸습니다.
meta조금 읽은 후에 는이 질문이 여기 또는 SO에 있어야하는 날씨에 관한 구분이있는 것 같습니다. 나는 이것이 닌자 수준의 쿼리 가 아닐 수도 있다는 것을 알고 있지만, 나는 그것이 혼란에 빠졌고 내가 일하는 회사에는 DBA가 없다 (총 6 명).