1. 程式人生 > 其它 >【SQL基礎】【記住重新命名】高階查詢:聚合函式(四捨五入)、分組過濾、排序、

【SQL基礎】【記住重新命名】高階查詢:聚合函式(四捨五入)、分組過濾、排序、

〇、概述

1、功能概述

高階查詢:聚合函式(四捨五入)、分組過濾、排序、

2、建表語句

drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`gpa` float);
INSERT INTO user_profile VALUES(1,2234,'male',21,'北京大學
',3.2); INSERT INTO user_profile VALUES(2,2235,'male',null,'復旦大學',3.8); INSERT INTO user_profile VALUES(3,2236,'female',20,'復旦大學',3.5); INSERT INTO user_profile VALUES(4,2237,'female',23,'浙江大學',3.3); INSERT INTO user_profile VALUES(5,2238,'male',25,'復旦大學',3.1); INSERT INTO user_profile VALUES(6,2239,'
male',25,'北京大學',3.6); INSERT INTO user_profile VALUES(7,2240,'male',null,'清華大學',3.3); INSERT INTO user_profile VALUES(8,2241,'female',null,'北京大學',3.7);

3、表中資料

 

一、計算函式(聚合函式)

1、查詢GPA最高的值

復旦大學學生gpa最高值是多少

SELECT
    MAX(gpa)
FROM user_profile
WHERE university='復旦大學';

2、計算男生人數以及平均GPA

SELECT
    COUNT
(*) AS male_num, ROUND(AVG(gpa),1) AS ave_gpa FROM user_profile WHERE gender='male';

二、分組查詢

1、分組計算【四捨五入是ROUND】

分別計算出每個學校每種性別的使用者數、30天內平均活躍天數和平均發帖數量。

SELECT
    gender,
    university,
    COUNT(*) AS user_num,
    ROUND(AVG(active_days_within_30),1) AS avg_active_day,
    ROUND(AVG(question_cnt),1) AS avg_question_cnt
FROM user_profile
GROUP BY university, gender;

2、分組過濾

取出平均發貼數低於5的學校或平均回帖數小於20的學校。

SELECT
    university,
    ROUND(AVG(question_cnt),3) AS avg_question_cnt,
    ROUND(AVG(answer_cnt),3) AS avg_answer_cnt
FROM user_profile
GROUP BY university
HAVING avg_question_cnt<5 or avg_answer_cnt<20;

3、分組排序

檢視不同大學的使用者平均發帖情況,並期望結果按照平均發帖情況進行升序排列

SELECT
    university,
    ROUND(AVG(question_cnt),4) AS avg_question_cnt
FROM user_profile
GROUP BY university
ORDER BY avg_question_cnt ASC;