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