<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      MySQL總結與分組數據

      [摘要]一 匯總和分組數據查詢語句 ---> 結果集(多條數據) ---> 聚合函數 ----> 單行記錄1.常用的聚合函數:sum() 數字 ...
      一 匯總和分組數據

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

      1.常用的聚合函數:

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

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

      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

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

      內連接特點:相連接的兩張表地位平等

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

      from 子句后面直接出現多個表名,這種連接方式即屬于內連接,是隱式內連接

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

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

      select user_name as '昵稱', g_name as '游戲名稱', score as '分數' from games inner join scores on games.gno =scores.gno

      inner join users on score.user_qq=user.user_qq

      例:查詢每個玩家的昵稱,總分和平均分

      select user_name as '昵稱',sum(score) as '總分',avg(score) as '平均分' from users U inner join scores S on S.user_qq = U.user_qq group by U.user_qq,user_name

      例:查詢平均分數大于3500的分數信息,顯示玩家昵稱,總分數,平均分數,并按照平均分數降序排列

      select user_name as '昵稱',sum(score) as '總分',avg(score) as '平均分' from users U inner join scores S on S.user_qq = U.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中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清