在網上搜到的一種演算法是利用自增長變數進行排序,然後再根據位置序號取。感覺有些複雜了,還是group_concat來的省事些
1. 按順序聚合,逗號分隔,並計數
group_concat( number order by number asc)
2. 根據逗號拆分,判斷奇偶數去擷取中間位置的那個數
具體**如下:
select
doctor_name doctor, -- 分組
count(1) patientnum, -- 總數
group_concat(dnt order by dnt asc),
substring_index(substring_index(group_concat(dnt order by dnt asc),',',(count(1)+1) div 2),',',-1) dnt,
case when count(1)%2=1 then substring_index(substring_index(group_concat(dnt order by dnt asc),',',(count(1)+1) div 2),',',-1) else (substring_index(substring_index(group_concat(dnt order by dnt asc),',',(count(1)+2) div 2),',',-1) +
substring_index(substring_index(group_concat(dnt order by dnt asc),',',count(1) div 2),',',-1))/2
end mid_dnt
from
select distinct doctor_name, record_id, dnt
from rp_green_channel_patient_detaile
where dnt is not null
and visit_day >= '2020-03-30'
and visit_day <= '2020-06-27'
) as a
group by doctor_name
mysql計算位數 MySQL中位數計算方法
在網上搜到的一種演算法是利用自增長變數進行排序,然後再根據位置序號取。感覺有些複雜了,還是group concat來的省事些 1.按順序聚合,逗號分隔,並計數 group concat number order by number asc 2.根據逗號拆分,判斷奇偶數去擷取中間位置的那個數 具體 如...
mysql計算位數 MySQL中位數計算方法
在網上搜到的一種演算法是利用自增長變數進行排序,然後再根據位置序號取。感覺有些複雜了,還是group concat來的省事些 1.按順序聚合,逗號分隔,並計數 group concat number order by number asc 2.根據逗號拆分,判斷奇偶數去擷取中間位置的那個數 具體 如...
mysql 分組中位數
查詢表中每個userid的loading time 中位數 最終sql如下 set id1 0 set id2 0 select t2.userid,sum if t3.id2 t2.id25,t3.loading time,0 as t25,sum if t3.id2 t2.id50,t3.loa...