# 排序
# order by 字段
# asc 從小到大排序,即升序
# desc從大到小排序,即降序
# 查詢年齡在18到34歲之間的男性,按照年齡從小到大排序
select * from students where (age between 18 and 34) and gender=1 order by age;
select * from students where (age between 18 and 34) and gender=1 order by age asc;
# 查詢年齡在18到34歲之間的男性,按照年齡從小到大排序
select * from students where (age between 18 and 34) and gender=1 order by age desc;
# 查詢年齡在18到34歲之間的女性,身高從高到矮排序
select * from students where age between 18 and 34 and gender=2 order by height desc;
# order by 多個字段
# 查詢年齡在18到34歲之間的女性,身高從高到矮排序,如果身高相同的情況下按照序列從小到大排序
select * from students where (age between 18 and 34) and gender=2 order by height desc,id desc;
# 聚合函數
# count
# 查詢男性有多少人
select count(*) from students where gender=1;
select count(*) as 男性人數 from students where gender=1;
# 最大值
# max
# 查詢最大年齡
select max(age) from students;
# 最大值
# min
# 查詢最小年齡
select min(age) from students;
# 求和
# sum
# 查詢最大年齡
select sum(age) from students;
# 求平均值
# avg
# 查詢平均年齡
select avg(age) from students;
# 計算平均年齡
select sum(age)/count(*) from students;
# 四捨五入,保留兩位小數
select round(sum(age)/count(*),2) from students;
# 計算男性的平均身高,保留兩位小數
select round(sum(height)/count(*),2) from students where gender=1;
# 分組
# 按照性別分組,查詢所有的性別
select gender from students group by gender;
select gender,count(*) from students group by gender;
# count(*) 是對前面的分組每組進行求數據
# group_concat
select gender,group_concat(name) from students group by gender;
select gender,group_concat(name,"_",age,"_",id) from students where gender=1 group by gender;
# having
# 查詢平均年齡超過30歲的性別,以及姓名
select gender,group_concat(name),avg(age), from students group by gender having avg(age)>30;
# where 和 having 的區別 where在group by 前面 ,having 在group by 後面 ,where 是在對原表進行判斷,having是在對判斷分組之後的表格
select gender,group_concat(name) from stundents group by gender having count(*)>2;