久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql如何分組求和

211次閱讀
沒有評論

共計 2325 個字符,預計需要花費 6 分鐘才能閱讀完成。

本篇內容介紹了“mysql 如何分組求和”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在 mysql 中,可以利用 SELECT 語句配合 SUM() 函數和“GROUP BY”來分組求和,語法為“SELECT 查詢字段 SUM( 求和字段) AS 字段 FROM 表名 WHERE 條件 GROUP BY 分組字段一, 分組字段二;”。

本教程操作環境:windows10 系統、mysql8.0.22 版本、Dell G3 電腦。

mysql 怎么分組求和

在 mysql 中,可以利用

SELECT  查詢字段  SUM(求和字段) AS  字段  FROM  表名  WHERE  條件  GROUP BY  分組字段一, 分組字段二;

來進行分組求和。

示例如下:

1)count() 求某列的行數

很容易理解,count(列名) 就是求某列的行數,值得注意的一點是該列不會計算空值的行數。舉例:

— 查詢共有幾名教師

— 查詢教師表共有多少行
SELECT COUNT(*) FROM teacher;

如果列中有重復值,我們計數不想計算重復值,怎么辦呢?我們可以使用 distinct 來解決:

--  查詢成績表里共有幾個學生的成績
SELECT COUNT(DISTINCT  學號) FROM score;

2)sum() 對某列數據求和

求和,就是對某一列的數值進行求和,只能對數值進行計算。舉例:

--  對所有成績求和
SELECT SUM(成績) FROM score;

3)avg() 對某列數值求平均值

同樣,平均值的計算只能對數值進行計算:

--  對所有成績求平均值
SELECT AVG(成績) FROM score;

4)max() 求某列數據的最大值、min() 求某列數據的最小值

--  獲取所有成績中的最大成績
SELECT MAX(成績),MIN(成績) FROM score;

分組

問題中,我們提到,需要知道每科成績的平均成績,那么我們就需要進行分組。

SQL 中,group by 語句可以根據一列或者多列對結果集進行分組。舉例:

--  計算每一科課程的平均成績
SELECT  課程號,AVG(成績) FROM score GROUP BY  課程號;

在上篇文章中,我們就有簡單的介紹 SQL 語句執行順序:先執行 from 從哪個表獲取數據,再執行 select 語句;

這里我們從成績表獲取數據,使用 group by 語句將數據按某種規則進行分組;然后在分組的結果上進行計算 count();最后 select 組合結果,把上一步的每一組計算結果總結到一個表中。

對分組條件指定條件

在一開始的問題里,要求“計算各科的平均成績并且得出平均成績大于等于 80 分”,以上兩節我們得到了計算每天一科的平均成績,現在對平均成績指定條件:“大于等于 80 分”,我們使用 having 子句。

having 子句與 where 子句都是有條件的選取數據,不同的是 where 不能與匯總函數一起使用。

--  計算平均成績大于等于 80 分的課程;
SELECT  課程號,AVG(成績) FROM score GROUP BY  課程號  HAVING AVG(成績)

那是不是說,having 子句的順序也是在 select 結果匯總的前邊呢?是的,having 子句是對 group by 的分組結果指定條件,比如要求大于等于 80 分,篩選出結果后,在進行結果匯總。

--  對教師表根據教師姓名排序
SELECT * FROM teacher ORDER BY  教師姓名;

mysql 如何分組求和

我們發現,空值 Null 排在了最前面,所以:含有空值的列在排序時候,空值 null 會在開頭,當數據量很大想看空值的情況,就可以用這個排序。

另外,在補充一個 limit 語句,從查詢結果中取出指定行,比如,我們如果從剛才的查詢結果中只取第一行:

--  計算平均成績大于等于 80 分的課程并根據成績降序排, 并獲取第一行
SELECT  課程號,AVG(成績) FROM score GROUP BY  課程號  HAVING AVG(成績) =80 ORDER BY AVG(成績) DESC LIMIT 1;

mysql 如何分組求和

接下來我們進行一個總結。

用 SQL 解決業務問題分析思路

簡單來說:明確問題,將問題翻譯成大白話,逐步進行拆解,并寫出分析思路和對應的 SQL 思路。

1)明確問題,將問題翻譯成大白話:

“計算各科的平均成績并且得出平均成績大于等于 80 分的課程并降序排列”翻譯成大白話就是:

“計算每一門課程的平均成績,然后根據得出的結果,進行大于等于 80 分的條件查詢,對查詢結果進行降序排列”。

2)逐步進行拆解,并寫出分析思路和對應的 SQL 思路:

① 對課程號進行分組,計算每一門課程的平均成績;

② 對①的結果指定條件“=80”;

③ 對②的結果進行降序排列;

我們可以把拆解后的思路套用到下方的公式中:

select  查詢結果
from  從那張表中查找數據
where  查詢條件(運算符、模糊查詢)group by  分組(每個)having  對分組結果指定條件
order by  對查詢結果排序
limit  從查詢結果中取出指定行;

試一下吧:

select  查詢結果 [課程號,avg( 成績)]
from  從那張表中查找數據 [成績表 score]
where  查詢條件(運算符、模糊查詢)[No]
group by  分組(每個)[課程號]
having  對分組結果指定條件 [avg( 成績)=80]
order by  對查詢結果排序 [avg( 成績)desc]
limit  從查詢結果中取出指定行;[No]

“mysql 如何分組求和”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計2325字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 安丘市| 纳雍县| 雅安市| 库伦旗| 全椒县| 托克托县| 色达县| 安平县| 铜山县| 商都县| 陆良县| 梁河县| 甘德县| 竹山县| 双城市| 惠水县| 平乐县| 靖西县| 缙云县| 拉萨市| 禄劝| 嘉祥县| 加查县| 武功县| 台中县| 黑河市| 阳新县| 上林县| 定日县| 南宁市| 武穴市| 天峨县| 台前县| 株洲县| 建湖县| 康平县| 高雄县| 民勤县| 巫溪县| 娄底市| 三都|