2014-07-07 3 views
3

아래의 쿼리는 온라인에서 찾은 것으로 중간 값을 올바르게 계산하는 것으로 보입니다. 그러나, 그것을 보아서, 나는 그것이 중앙값을 발견하기 위해 무엇을하고 있는지 전혀 모른다. 이 쿼리 (캐스트, 하위 문자열 인덱스, 그룹 연결, 구분 기호 등)에 대한 모든 부분을 이해할 수있는 사람이 나에게 설명 /이 쿼리의 작동 방식을 설명 할 수 있습니까?mysql 쿼리에 대한 설명

select CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(cost_per_unit ORDER BY 
cost_per_unit SEPARATOR ','),',', 50/100 * COUNT(*)), ',', -1) AS DECIMAL) 
AS '50th Percentile' from table 

모든 도움을 환영합니다! 내가 내부에서 시작하고 내 방식으로 작동합니다

감사

답변

2

밖으로

GROUP_CONCAT(cost_per_unit ORDER BY cost_per_unit SEPARATOR ',') 

반환 값

즉, (1)에 의해 ','로 구분 및 정렬 문자열로 모든 cost_per_unit, 2,3,4,4,5,6,7 (7 쉼표)

SUBSTRING_INDEX(previous_value,',', 50/100 * COUNT(*)) 

','즉 1,2,3,4

SUBSTRING_INDEX(previous_value,',', -1), 

마지막 (첫 뒤로) ',' 즉 4

+0

완벽 한 부분을 돌려줍니다. 정말 고맙습니다!! – user3760644