SQL計算中位數

2021-06-10 11:32:29 字數 685 閱讀 6434

表還是total_sales新增一項

表:

sql語句:

select * from

(select a1.name, a1.sales, count(a2.sales) sales_rank

from total_sales a1, total_sales a2

where a1.sales < a2.sales or (a1.sales=a2.sales and a1.name = a2.name)

group by a1.name, a1.sales

order by a1.sales desc, a1.name desc

) as tab where tab.sales_rank=(select (count(*)+1) div 2 from total_sales);

可以查詢到中間的項,count(*)+1,這個1必須要新增,總項數假如為奇數7,則count(*)+1 / 2 = 4,假如是6則為3,都是滿足的,如果不+1的話,對奇數項則不滿足,如7,count(*) /2 = 3,而我們要查詢的則是位於4的位置

結果:

演算法 中位數計算

中位數 median 1 定義 一組資料按從小到大 或從大到小 的順序依次排列,處在中間位置的乙個數 或最中間兩個資料的平均數,注意 和眾數不同,中位數不一定在這組資料中 注 當個數為基數時,取最中間位置的數 當個數為偶數時,取最中間兩個數的平均數。2 從小到大排序,可以先用氣泡排序,然後取中位數,...

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.根據逗號拆分,判斷奇偶數去擷取中間位置的那個數 具體 如...