mysql 位數 MySQL中位數計算方法

2021-10-17 11:43:34 字數 1044 閱讀 1084

在網上搜到的一種演算法是利用自增長變數進行排序,然後再根據位置序號取。感覺有些複雜了,還是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...