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进行过滤。由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什幺时候起作用,然后再决定放在那里。