查詢結果排序,多列排序,聚合函式,查詢分組,篩選結果,select語句執行順序
對指定列進行排序
單列排序要素(order_by_list按該列排序)
select col_list form table_name order by order_by_list [ASC|DESC]
例如:查詢分數表中編號為1的所有分數資訊,並按照分數升序排序
select * form scores where gno=1 order by score asc
例如:查詢分數表中編號為1的所有分數資訊,並按照分數降序排序
select * form scores where gno=1 order by score desc
對多列進行排序
多列排序要點:(排序依據、
(理解優先順序:如果金牌數高先排金牌數、如果金牌數相同在比較銀牌數、如果銀牌數相同在比較銅牌數)
例如:查詢分數表所有資訊,並按照遊戲編號的升序排序和分數的降序進行排序
select * form scores order by asc ,score desc
聚合函式
例如:查詢玩家表中一共有多少玩家資訊
select count(user_qq) from users
如果user_qq為空,則不會被統計
改寫:select count(*) from users
例如:查詢qq號是12301的玩家遊戲總分數
select sum(score) as '總分數
例如:檢視qq號是12302的玩家的平均分
select avg(score) as '平均分' form scores where user_qq='12302'
例如:檢視遊戲編號是1的遊戲的最高分數
select max(score) as '最高分' form scores where gno=1
例如:檢視QQ號是12302的玩家的總分、平均分、最高分
select
sum(score) as '總分'
avg(score) as '平均分'
max(score) as '最高分'
form scores
where user_qq='12302'
在結果集中進行分組
例如:要求查詢每個玩家的總分數、平均分、最高分
select
sum(score) as '總分'
avg(score) as '平均分'
max(score) as '最高分'
form scores
group by user_qq
篩選分組的結果(having一定要寫在group by之後
select
sum(score) as '總分'
avg(score) as '平均分'
max(score) as '最高分'
form scores
group by user_qq
having avg(score)>4000
例如:查詢所有使用者的的平均分數,和總分數,並按平均分倒序排列
select user_qq,
avg(score) as '平均分',
sum(score) as '總分數'
from scores
group by user_qq
order by avg(score) desc
select語句的執行順序
from子句指定資料來源
where子句基於指定的條件對記錄進行篩選
group by 子句將資料劃分為多個組
用聚合函式進行計算
使用having子句篩選分組
使用order by子句對結果進行排序