首頁 > 資料庫 > mysql教程 > MySQL匯總和分組數據

MySQL匯總和分組數據

大家讲道理
發布: 2017-08-19 10:42:18
原創
1602 人瀏覽過

一彙總和分組資料

查詢語句---> 結果集(多條資料) ---> 聚合函數 --- -> 單行記錄

1.常用的聚合函數:

sum()         數字                                          對指定列中的所有非空值求平均值

min()    數字,字符,datetime        傳回指定列中的最小數字,最早的日期或最小的字串

max()數字,字符,datetime        返回指定列中的最大數字,最近的日期或最大的字符集

count()   任意基於行的數據類型      統計結果集合眾全部記錄行的數量

 

例:查詢玩家表中總共有多少名玩家資訊

select count (user_qq) from users

select count(*) from users

範例:查詢QQ號是12301的玩家遊戲的總分

select sum(score) as '總分' from scores where user_qq='12301'

例:查詢QQ號是12302玩家的評價分數

select avg(score) as '平均分數' from scores where user_qq='12302'

#例:查詢遊戲編號的1的最高分數

select max(score) as '最高分數' from score where gno=1

#例: 查詢QQ號是12302的玩家的總分,平均分數和最高分數

select sum( score) as '總分',avg(score) as '平均分數',max(score) as '最高分' from scores where user_qq ='12302'

#2. 使用GROUP BY分組

範例:查詢每位玩家的總分,平均分數,最高分數

select sum(score) as '總分',avg(score) as '平均分數' ,max(score) as '最高分' from scores group by user_qq

#例: 查詢每個玩家的平均分數,並顯示玩家QQ號和平均分數

select user_qq, avg( score) as '平均分數' from scores group by user_qq

 

3. 篩選分組結果

  使用GROUP BY子句時,可用HAVING子句為分組統計進一步設定統計條件,HAVING子句與GROUP BY 子句的關係相當於WHERE子句與SELECT子句之間的關係

 與WHERE子句的差異是,在HAVING子句中是以聚合函數的統計結果為篩選條件。

 例:查詢平均分數大於4000的玩家QQ號,總分,平均分數

select user_qq, sum(score) as'總分', avg(score) as '平均分數' from scores group by user_qq having avg(score) > 4000

例:查詢所有使用者的平均分數,和總分,並依平均分數倒序排列

select user_qq,avg( score) as '平均分數' , sun(score) as '總分數' from scores group by user_qq orde by avg(score) desc

 

4.SELECT 語句的執行順序

     from 子句指定數據源

     where 子句基於指定的條件對記錄進行篩選

     group by 子句將數據劃分為多個分組

使用聚合函數進行計算

     使用having子句篩選分組

     使用order by 子句對結果集進行排序

 

二連接查詢1. 多表連接

例:查詢分數信息,顯示玩家暱稱,遊戲名稱和分數

select user_name as '暱稱', game as '遊戲名稱' , score as '分數' from users.user_qq = scores.user_qq and game.gno= scores.gno

#連接查詢分為內連接和外連接兩種

內部連結特性:相連結的兩張表格地位平等

##                 如果一張表中在另一張表中不存在對應數據,則不做連結

##  出現多個表名,此連接方式屬於內連接,是隱式內連接

                 顯示內連結格式:select col_list from table1[inner] join table2 on table1.col=table2.clo1.col=table2.clo1

##                 例:查詢分數訊息,顯示玩家暱稱,遊戲名稱與分數

                select user_name sname name sname)' games .gno =scores.gno

                 inner join users on score.user_qq=user.user_qq

                 例:查詢每位玩家的暱稱,總分和平均分數

                  1 select               對接時 select 使用者_name as '對合相 '分子時 ' users U inner join scores S on S.user_qq = U.user_qq group by                         U.user_qq,user_name

 ,顯示玩家暱稱,總分數,平均分數,並按照平均分數降序排列

                  select user_name as '暱稱',sum(score) as '總分',avg(score) as '平均分數' from users U in in inica S.res S user_qq group by                         U.user_qq,user_name having avg(score)>3500 order by avg(score) desc##.連結的兩個表地位不平等,其中有一張的基礎表

                 基礎表中的每個資料必須出現,即使另一張表中沒有資料與之匹配,也要用NULL補齊

#                 左外連接時左表為基礎表,右表外連接時右表是基礎表

##               

               》

外部連線格式: SELECT COL_LIST FROM TABLE1 LEFT/RIGHT[OUTER] JOIN TABLE2 ON TABLE1.COL=TABLE2.COL

 例:查詢所有玩家關於5號遊戲的分數資訊

   select user_name as'暱稱' gno as '遊戲編號', score as '分數' from users U left join scores S on U.user_qq=S.user_qq and S.gno=5

以上是MySQL匯總和分組數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板