做網(wǎng)站雙12促銷方案百度官方免費(fèi)下載安裝
題目1——查找GPA最高值
想要知道復(fù)旦大學(xué)學(xué)生gpa最高值是多少,請(qǐng)你取出相應(yīng)數(shù)據(jù)
題解:
1、使用MAX
select MAX(gpa) FROM user_profile?WHERE university = '復(fù)旦大學(xué)'
2、使用降序排序組合limit
select gpa FROM user_profile WHERE university = '復(fù)旦大學(xué)' order by gpa desc limit 1
題目2——計(jì)算男生人數(shù)以及平均GPA
想要看一下男性用戶有多少人以及他們的平均gpa是多少,用以輔助設(shè)計(jì)相關(guān)活動(dòng),請(qǐng)你取出相應(yīng)數(shù)據(jù)
題解:
按照要求進(jìn)行條件分解:
限定條件為 男性用戶;
有多少人,明顯是計(jì)數(shù),count函數(shù);
平均gpa,求平均值用avg函數(shù);
細(xì)節(jié)問題:根據(jù)輸出示例,有兩個(gè)問題需要注意:
表頭重命名,用as語法
浮點(diǎn)數(shù)的平均值可能小數(shù)點(diǎn)位數(shù)很多,按照示例保存一位小數(shù),用round函數(shù)
select ?count(gender) as male_num,round(avg(gpa),1) as avg_gpa
from user_profile
where gender="male"
題目3——分組計(jì)算練習(xí)題
想要對(duì)每個(gè)學(xué)校不同性別的用戶活躍情況和發(fā)帖數(shù)量進(jìn)行分析,請(qǐng)分別計(jì)算出每個(gè)學(xué)校每種性別的用戶數(shù)、30天內(nèi)平均活躍天數(shù)和平均發(fā)帖數(shù)量
題解:先進(jìn)行條件分解
限定條件:無;
每個(gè)學(xué)校每種性別:按學(xué)校和性別分組:group by gender, university
用戶數(shù):count(device_id)
30天內(nèi)平均活躍天數(shù):avg(active_days_within_30)
平均發(fā)帖數(shù)量:avg(question_cnt)
select
gender,university,
count(device_id) as user_num,
avg(active_days_within_30) as avg_active_day,
avg(question_cnt) as avg_question_cnt
from user_profile
group by gender,university
題目4——分組過濾練習(xí)題
想查看每個(gè)學(xué)校用戶的平均發(fā)貼和回帖情況,尋找低活躍度學(xué)校進(jìn)行重點(diǎn)運(yùn)營(yíng),請(qǐng)取出平均發(fā)貼數(shù)低于5的學(xué)?;蚱骄靥麛?shù)小于20的學(xué)校。
題解:
having篩選,having常用于對(duì)分組結(jié)果進(jìn)行篩選。
這里不能使用where的原因是 where的執(zhí)行順序早于group by,所以where 也不可以使用 列的別名。而having可以,執(zhí)行順序如下:
答案:
select
university,
avg(question_cnt) as avg_question_cnt,
avg(answer_cnt) as avg_answer_cnt
from user_profile
group by university
Having avg(question_cnt)<5 or avg(answer_cnt)<20
題目5——分組排序練習(xí)題
想要查看不同大學(xué)的用戶平均發(fā)帖情況,并期望結(jié)果按照平均發(fā)帖情況進(jìn)行升序排列,請(qǐng)你取出相應(yīng)數(shù)據(jù)。
題解:
select university,avg(question_cnt) as avg_question_cnt
from user_profile
group by university
order by avg_question_cnt