1. 程式人生 > >【SQL】利用HAVING取眾數和中位數

【SQL】利用HAVING取眾數和中位數

1. 建立測試表及測試資料

CREATE TABLE graduates (
  name varchar(255) ,
  income int4(255) 
);

INSERT INTO graduates VALUES ('桑普森', '400000');
INSERT INTO graduates VALUES ('邁克', '30000');
INSERT INTO graduates VALUES ('懷特', '20000');
INSERT INTO graduates VALUES ('阿諾德', '20000');
INSERT INTO graduates VALUES ('史密斯', '20000');
INSERT INTO graduates VALUES ('勞倫斯', '15000');
INSERT INTO graduates VALUES ('哈德遜', '15000');
INSERT INTO graduates VALUES ('肯特', '10000');
INSERT INTO graduates VALUES ('貝克', '10000');
INSERT INTO graduates VALUES ('斯科特', '10000');

2. 取眾數

select income,count(*) cnt 
from graduates
group by income
having count(*) >= (
select max(cnt) from (select count(*) cnt from graduates group by income) tmp
);

3. 取中位數

select AVG(DISTINCT income)
from (
select T1.income from graduates T1,graduates T2
group by T1.income
having sum(case when T2.income >= T1.income then 1 else 0 end) >= count(*)/2
and sum(case when T2.income <= T1.income then 1 else 0 end) >= count(*)/2
) tmp;

相關推薦

SQL利用HAVING位數

1. 建立測試表及測試資料CREATE TABLE graduates ( name varchar(255) , income int4(255) ); INSERT INTO gradu

統計學資料描述方法(均值、位數、標準差、離差、四分位數

分佈中心的測量:     均值:大多數時候所說的平均數,它的定義如下:         均值=  所有數值的總和 / 所有數值的個數總和     中位數:分類資料組的中間值(如果資料個數為偶數,則

Java 劍指offer(39) 出現次數超過一半的數字

特殊 時間復雜度 方法 term 測試 logs pan vat cnblogs 本文參考自《劍指offer》一書,代碼采用Java語言。 更多:《劍指Offer》Java實現合集 題目    數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入

Java 劍指offer(51)的逆序對

邊界 時間復雜度 return tps arr 暫時 大小 target star 本文參考自《劍指offer》一書,代碼采用Java語言。 更多:《劍指Offer》Java實現合集 題目    在數組中的兩個數字如果前面一個數字大於後面的數字,則這兩個數字組成一

javaweb利用DOM操作往DIV塊新增文字

需求:利用DOM操作往DIV塊中自動新增文字 使用的DOM操作如下: (1)createTextNode() 建立文字節點 (2)createElement() 建立元素節點 (3)appendchild(node) 插入新節點 分析:  程式碼實現

Pascal用到的符號

1、PASCAL語言的字元表 是ASCII字符集,主要有:  ⑴26個英文字母(不分大小寫)  ⑵十個數字符號  ⑶特殊符號。如+-*/=><][:;.等 2、識別符號 以字母開頭的字母數字序列(大小寫等效,可跟下劃線_),用來標識常量、變數、程式、函式等。 自定義識別符號時要注意遵循此規則。

LeetCode004.兩個排序陣列的位數

兩個排列陣列的中位數 問題描述: 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 。 請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 O(log (m+n)) 。 你可以假

Excel利用SQL資料

在 Excel 中對外部資料實現自動連結,並在資料來源更新時,重新整理資料。Excel實現的工具欄路徑:資料-現有連結 直接引用表 select * from [資料$] 直接關聯多張表 select * from [蘇州 $] union all s

Python利用count函式求list每個元素出現的次數,求的改進

在《【Python】利用setdefault函式實現dict的轉置(key與value對互換),統計value出現的次數》(點選開啟連結)中介紹過,如何統計dict中相同value的key的出現次數。本文介紹如何利用list自帶的count函式,來統計list中每個元素出現

Pyhon利用BurpSuite到SQLMap批量測試SQL注入

前言 通過Python指令碼把Burp的HTTP請求提取出來交給SQLMap批量測試,提升找大入口網站SQL注入點的效率。 匯出Burp的請求包 配置到Burp的代理後瀏覽門戶站點,Burp會將URL紀錄儲存在HTTP History選項卡的內容裡 匯出Burp的請求包到SQLMAP中測試SQL注

HDU1565方格(1)

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11226    Accepted Submission(

SQLORACLE更新多行資料,利用decode函式,對應關係,改資料

需求如下: 資料庫如下: 要求上面移動,資料庫作對應改變。。。用decode函式,可以一條SQL改變三條語句。 實際執行SQL如下: UPDATE CC_SYS_FRAME SET FRAME_LEVEL = decode(FRAME_NAME, '裝置',1 ,

SQL分組資料,過濾分組-group by , having

建立分組 - GROUP BY 分組是在SELECT語句的GROUP BY子句中建立的。它的作用是通過一定的規則將一個數據集劃分成若干個小的區域,然後針對若干個小區域進行資料處理。SELECT子句中的列名必須為分組列或列函式,列函式對於GROUP BY子句定義的每個組各返回

Mysql利用group by附帶having進行聚類查詢

聚類查詢所針對的物件是表的其中一列,譬如如下的testtable表,要查出username這一列中,各個項所出現的次數,則用到聚類查詢 顯然,聚類查詢之後,得到的結果必須與id,number這兩列半點關係都沒有。因此,也就是正如上門,所說,聚類查詢所針對的物件是表的其中一

SQL一條查詢統計同一欄位不同記錄值數量(頻統計)的寫法

     SQL查詢中經常會碰到需要在一條語句中統計某欄位中不同記錄值的數量,即頻數統計。在看《高效能MySQL》(https://book.douban.com/subject/23008813/)這本“葵花寶典”時看到裡面總結了兩種方法,我在這裡再整理記錄一下:一種是

jQuery利用表單的序列化根據name表單,做表單的驗證

在前臺做表單的驗證的方式有很多種,具體思想是你先要把表單的要驗證項裡面的值取出來,然後再指令碼處進行判斷,最後根據判斷結果告警,然後給onsubmit="return XX()"那個函式,返回true與false的布林值。整個過程,把表單的要驗證項取出來是關鍵。在《【Jav

JqueryjQuery獲取URL參的兩種方法

ont ras mil scrip line 兩種方法 lower quest request jQuery獲取URL參數的關鍵是獲取到URL,然後對URL進行過濾處理,取出參數。 location.href是取得URL。location.search是取得URL“?

gcc的__builtin_函介紹

部分 art types 字節 函數的調用 編寫 強制 跳轉指令 預取 轉自:http://blog.csdn.net/jasonchen_gbd/article/details/44948523 GCC提供了一系列的builtin函數,可以實現一些簡單快捷的功能來方便程序

bzoj3238[Ahoi2013]差異 後綴組+單調棧

其中 int alt sin bsp 大於等於 com 輸出 最小 題目描述 輸入 一行,一個字符串S 輸出 一行,一個整數,表示所求值 樣例輸入 cacao 樣例輸出 54 題解 後綴數組+單調棧,幾乎同 bzoj3879 的後半部分。 我

案例利用innodb_force_recovery 解決MySQL服務器crash無法重啟問題

sock ogre ogr 事務 == format span caused his 一 背景 某一創業的朋友的主機因為磁盤陣列損壞機器crash,重啟MySQL服務時 報如下錯誤: InnoDB: Reading tablespace informatio