??兔看慰荚囃?,都會有一個成績表(grade),如下: id job score 1 C++ 11001 2 C++ 11000 3 C++ 9000 4 JAVA 12000 5 JAVA 13000 6 B 12000 7 B 11000 8 B 9999 第1行表示用戶id為1的用戶選擇了C++崗位并且考了11001分 。。。 第8行表示用戶id為8的用戶選擇了B語言崗位并且考了9999分 請你寫一個sql語句查詢各個崗位分數(shù)升序排列之后的中位數(shù)位置的范圍,并且按job升序排序,結(jié)果如下: job start end B 2 2 C++ 2 2 Java 1 2 解釋: 第1行表示C++崗位的中位數(shù)位置范圍為[2,2],也就是2。因為C++崗位總共3個人,是奇數(shù),所以中位數(shù)位置為2是正確的(即位置為2的10000是中位數(shù)) 第2行表示Java崗位的中位數(shù)位置范圍為[1,2]。因為Java崗位總共2個人,是偶數(shù),所以要知道中位數(shù),需要知道2個位置的數(shù)字,而因為只有2個人,所以中位數(shù)位置為[1,2]是正確的(即需要知道位置為1的12000與位置為2的13000才能計算出中位數(shù)為12500) 第3行表示前端崗位的中位數(shù)位置范圍為[2,2],也就是2。因為B語言崗位總共3個人,是奇數(shù),所以中位數(shù)位置為2是正確的(即位置為2的11000是中位數(shù)) (注意: sqlite 12得到的不是0.5,得到的是0,只有1*1.02才會得到0.5,sqlite四舍五入的函數(shù)為round,sqlite不支持floor函數(shù),支持cast(x as integer) 函數(shù),不支持if函數(shù),支持case when ...then ...else ..end函數(shù))
示例1
輸入
drop table if exists grade;
CREATE TABLE grade(
`id` int(4) NOT NULL,
`job` varchar(32) NOT NULL,
`score` int(10) NOT NULL,
PRIMARY KEY (`id`));
INSERT INTO grade VALUES
(1,'C++',11001),
(2,'C++',10000),
(3,'C++',9000),
(4,'Java',12000),
(5,'Java',13000),
(6,'B',12000),
(7,'B',11000),
(8,'B',9999);
加載中...