sql-分組函數


 

 每門學科最低的分數和人

SELECT * FROM stu
WHERE (stu.`score`,stu.`course`)
IN
(
SELECT MIN(score),course FROM stu GROUP BY course
)

 

分組前的篩選 原始表 篩選條件位於group by子句之前 where關鍵字   不能在where 后使用組函數
分組后的篩選 分組后的結果 篩選條件位於group by子句之后 having關鍵字

 

常用的組函數:

AVG([distinct] expr)

求平均值

COUNT({*|[distinct] } expr)

統計行的數量

MAX([distinct] expr)

求最大值

MIN([distinct] expr)

求最小值

SUM([distinct] expr)

求累加和

 

如果統計的列中只有NULL值,那么MAX和MIN就返回NULL

 

默認情況下,組函數忽略列值為null的行,不參與計算

 

 2)組函數不允許嵌套,例如:count(max(…));

 3)組函數的參數可以是列或是函數表達式;

 4)一個SELECT子句中可出現多個聚集函數。

注意:要想列值為NULL的行也參與組函數的計算,必須使用IFNULL函數對NULL值做轉換。

 

 

SELECT select_expr [, select_expr ...] [FROM table_references [PARTITION partition_list] [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}]

1)HAVING可以單獨使用而不和GROUP BY配合,如果只有HAVING子句而沒有GROUP BY,表中所有的行分為一組

 
        

2)HAVING子句中可以使用組函數

 
        

3)HAVING子句中的列,要么出現在一個組函數中,要么出現在GROUP BY子句中(否則出錯)

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM