国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

mysql怎樣分組求和

2024-07-24 12:33:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  本篇內(nèi)容介紹了“mysql如何分組求和”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
 
  在mysql中,可以利用SELECT語(yǔ)句配合SUM()函數(shù)和“GROUP BY”來(lái)分組求和,語(yǔ)法為“SELECT 查詢(xún)字段 SUM(求和字段) AS 字段 FROM 表名 WHERE 條件 GROUP BY 分組字段一,分組字段二;”。
 
  本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。
 
  在mysql中,可以利用
 
  SELECT 查詢(xún)字段 SUM(求和字段) AS 字段 FROM 表名 WHERE 條件 GROUP BY 分組字段一,分組字段二;
 
  來(lái)進(jìn)行分組求和。
  
  分組
 
  問(wèn)題中,我們提到,需要知道每科成績(jī)的平均成績(jī),那么我們就需要進(jìn)行分組。
 
  SQL中,group by語(yǔ)句可以根據(jù)一列或者多列對(duì)結(jié)果集進(jìn)行分組。舉例:
 
  -- 計(jì)算每一科課程的平均成績(jī)
 
  SELECT 課程號(hào),AVG(成績(jī)) FROM score GROUP BY 課程號(hào);
 
  在上篇文章中,我們就有簡(jiǎn)單的介紹SQL語(yǔ)句執(zhí)行順序:先執(zhí)行from從哪個(gè)表獲取數(shù)據(jù),再執(zhí)行select語(yǔ)句;
 
  這里我們從成績(jī)表獲取數(shù)據(jù),使用group by語(yǔ)句將數(shù)據(jù)按某種規(guī)則進(jìn)行分組;然后在分組的結(jié)果上進(jìn)行計(jì)算count();最后select組合結(jié)果,把上一步的每一組計(jì)算結(jié)果總結(jié)到一個(gè)表中。
 
  對(duì)分組條件指定條件
 
  在一開(kāi)始的問(wèn)題里,要求“計(jì)算各科的平均成績(jī)并且得出平均成績(jī)大于等于80分”,以上兩節(jié)我們得到了計(jì)算每天一科的平均成績(jī),現(xiàn)在對(duì)平均成績(jī)指定條件:“大于等于80分”,我們使用having子句。
 
  having子句與where子句都是有條件的選取數(shù)據(jù),不同的是where不能與匯總函數(shù)一起使用。
 
  -- 計(jì)算平均成績(jī)大于等于80分的課程;
 
  SELECT 課程號(hào),AVG(成績(jī)) FROM score GROUP BY 課程號(hào) HAVING AVG(成績(jī))>=80;
 
  那是不是說(shuō),having子句的順序也是在select結(jié)果匯總的前邊呢?是的,having子句是對(duì)group by 的分組結(jié)果指定條件,比如要求大于等于80分,篩選出結(jié)果后,在進(jìn)行結(jié)果匯總。
 
  -- 對(duì)教師表根據(jù)教師姓名排序
 
  SELECT * FROM teacher ORDER BY 教師姓名;
 
  我們發(fā)現(xiàn),空值Null排在了最前面,所以:含有空值的列在排序時(shí)候,空值null會(huì)在開(kāi)頭,當(dāng)數(shù)據(jù)量很大想看空值的情況,就可以用這個(gè)排序。
 
  另外,在補(bǔ)充一個(gè)limit語(yǔ)句,從查詢(xún)結(jié)果中取出指定行,比如,我們?nèi)绻麖膭偛诺牟樵?xún)結(jié)果中只取第一行:
 
  -- 計(jì)算平均成績(jī)大于等于80分的課程并根據(jù)成績(jī)降序排,并獲取第一行
 
  SELECT 課程號(hào),AVG(成績(jī)) FROM score GROUP BY 課程號(hào) HAVING AVG(成績(jī))>=80 ORDER BY AVG(成績(jī)) DESC LIMIT 1;
 
  接下來(lái)我們進(jìn)行一個(gè)總結(jié)。
 
  用SQL解決業(yè)務(wù)問(wèn)題分析思路
 
  簡(jiǎn)單來(lái)說(shuō):明確問(wèn)題,將問(wèn)題翻譯成大白話,逐步進(jìn)行拆解,并寫(xiě)出分析思路和對(duì)應(yīng)的SQL思路。
 
  1) 明確問(wèn)題,將問(wèn)題翻譯成大白話:
 
  “計(jì)算各科的平均成績(jī)并且得出平均成績(jī)大于等于80分的課程并降序排列”翻譯成大白話就是:
 
  “計(jì)算每一門(mén)課程的平均成績(jī),然后根據(jù)得出的結(jié)果,進(jìn)行大于等于80分的條件查詢(xún),對(duì)查詢(xún)結(jié)果進(jìn)行降序排列”。
 
  2) 逐步進(jìn)行拆解,并寫(xiě)出分析思路和對(duì)應(yīng)的SQL思路:
 
  ① 對(duì)課程號(hào)進(jìn)行分組,計(jì)算每一門(mén)課程的平均成績(jī);
 
  ② 對(duì)①的結(jié)果指定條件“>=80”;
 
  ③ 對(duì)②的結(jié)果進(jìn)行降序排列;
 
  我們可以把拆解后的思路套用到下方的公式中:
 
  select 查詢(xún)結(jié)果
 
  from 從那張表中查找數(shù)據(jù)
 
  where 查詢(xún)條件(運(yùn)算符、模糊查詢(xún))
 
  group by 分組(每個(gè))
 
  having 對(duì)分組結(jié)果指定條件
 
  order by 對(duì)查詢(xún)結(jié)果排序
 
  limit 從查詢(xún)結(jié)果中取出指定行;
 
  “mysql如何分組求和”的內(nèi)容就介紹到這里了,感謝大家的閱讀。
 

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 元谋县| 武清区| 临武县| 威远县| 清水河县| 德钦县| 会东县| 清涧县| 凤城市| 宁陕县| 尼玛县| 嘉义县| 江华| 乌什县| 西乡县| 沂南县| 平乐县| 荆州市| 昌乐县| 大化| 富阳市| 康乐县| 铅山县| 仁布县| 玉龙| 平乡县| 嘉善县| 宝应县| 天峨县| 神农架林区| 华亭县| 哈密市| 墨玉县| 廉江市| 萨嘎县| 鹤岗市| 林周县| 康平县| 大足县| 屏东市| 科尔|