sql学习笔记-函数

SQL AVG() 语法

SELECT AVG(column_name) FROM table_name
求平均数

SQL COUNT(column_name) 语法

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_name;
统计该字段不为空的总数

SQL COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name;
统计该表中的总数

SQL COUNT(DISTINCT column_name) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name;
字段去重后统计总数

SQL MAX() 语法

SELECT MAX(column_name) FROM table_name;
查询该字段的最大值

SQL MIN() 语法

SELECT MIN(column_name) FROM table_name;
查询该字段的最小值

SQL SUM() 语法

SELECT SUM(column_name) FROM table_name;
查询该字段的总数(值相加的总数,上门的count是值数量的总数)
 

分组查询

SQL GROUP BY 语法

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
通过字段column_name进行分组,查询出对应的结果

HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

HAVING 子句可以让我们筛选分组后的各组数据。

SQL HAVING 语法

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value;

where 和having之后都是筛选条件,但是有区别的:

1.where在group by前, having在group by 之后

2.聚合函数(avg、sum、max、min、count),不能作为条件放在where之后,但可以放在having之后

 

on、where、having这三个都可以加条件的子句中,on是最先执行,where次之,having最后。

on只能用于连接查询(内连接、外连接、交叉连接),在其他情况下使用on会报错

on是在生成中间表时使用的条件;而where是在中间表生成后对中间表进行过滤使用的条件。
在两表联接查询时用on,在一个表的时候,就只有where跟having比较了。在这单表查询统计的情况下,如果要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,只是where可以使用rushmore技术,而having就不能,在速度上后者要慢。
 在多表联接查询时,on比where更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行过滤,然后再计算,计算完后再由having进行过滤。由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什幺时候起作用,然后再决定放在那里。

posted @ 2022-10-19 17:35  Rookie_C  阅读(36)  评论(0编辑  收藏  举报