mysql計算位數 MySQL中位數計算方法

2021-10-19 19:48:04 字數 1055 閱讀 4055

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

mysql中的運算子 4.1算數運算子 div mod 4.2比較運算子 用於比較運算子兩側的運算元是否相等,如果兩側的運算元相等,則返回1,否則返回0.注意null不能用 比較 與 相反,如果兩側的運算元不等,則值為1,否則為0,null不能用 和 相似,在運算元相等時為1,null可以使用。例如...