亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL怎么計算每個分組的中位數

發布時間:2022-01-15 16:24:33 來源:億速云 閱讀:347 作者:柒染 欄目:互聯網科技

這篇文章主要為大家分析了SQL怎么計算每個分組的中位數的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“SQL怎么計算每個分組的中位數”的知識吧。

中位數是指一組數據排序以后,位于中間位置的數據值。如果數據個數是奇數,中位數就是最中間位置那個值;如果是偶數,則是中間位置那兩個數的平均值。

怎么查詢出數據分組以后每個組的中位數呢?

用SQL來解決這個問題是很有難度的!

SQL的集合是無序的,沒有數據位置的概念,需要人為地造出行號,但是要對各分組獨立編行號也困難。后來在SQL2003標準中加入了窗口函數,可以對分組編行號了,但是求各組中位數依然繁瑣。

舉個例子:現有成績表SCORES數據如下,要求查出每科成績的中位數。

COURSESCORE
History68.5
History79.0
History82.5
History88.0
History93.5
Maths75.5
Maths83.0
Maths85.0
Maths95.5

查詢出來的各科成績中位數應該是:

COURSESCORE
History82.5
Maths84.0

以Oracle為例,用SQL寫出來是這樣:

WITH  A  AS 

       ( SELECT COURSE, SCORE,

              ROW_NUMBER()OVER ( PARTITION BY COURSE ORDER BY SCORE) AS RN,

              COUNT(*) OVER (PARTITION BY COURSE) AS CNT

       FROM SCORES ),

B  AS

       (SELECT * FROM A WHERE RN>(CNT-0.5)/2 AND RN<(CNT+2.5)/2 )

SELECT COURSE, AVG(SCORE) AS SCORE FROM B

GROUP BY COURSE

ORDER BY COURSE;

這里的A為每組數據加上組內行號并統計每組記錄數,B查出位于每組中間位置的記錄,最后從B里算出每組平均值,即為中位數。解題步驟比較多,這種SQL不好寫。另外還有不用窗口函數的辦法,語句就更加復雜了,這里不再列出。

集算器的SPL語言支持組內運算,也提供了中位數函數,解決這個問題就會簡單很多,只需1行代碼:

connect("mydb").query("select * from scores order by course, score").group(COURSE).new(~.COURSE,~.(SCORE).median():SCORE)

關于“SQL怎么計算每個分組的中位數”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI

容城县| 温泉县| 新竹县| 建昌县| 湘乡市| 兰州市| 石阡县| 武清区| 信丰县| 万源市| 时尚| 方山县| 汾阳市| 台安县| 永泰县| 永修县| 台北县| 建始县| 宜川县| 华宁县| 孝感市| 保定市| 拉孜县| 星子县| 文安县| 光山县| 清镇市| 博客| 闽清县| 商丘市| 赫章县| 贵南县| 靖宇县| 遂昌县| 夏邑县| 信宜市| 两当县| 东乌珠穆沁旗| 雅江县| 鹤庆县| 从江县|