对于SELECT语句完整的句法如下:
SELECT[DISTINCT] 目标表的列名或列表达式序列--------必写项(其中DISTINCT是去掉重复的数据项)
FROM 基本表名和(或)试图序列----------------------必写项
[WHERE 行条件表达式]
[GROUP BY 列名序列[HAVING 组条件表达式]]
[ODER BY 列名[ASC/DESC]]------------------ASC升序排列,DESC降序排列
---------------------------------------------------------------由于你在问题题目中提到了GROUP BY 的用法,下面就介绍一部分。
在数据库中,我们可以使用GROUP BY函数把数据组合在一起,从而获得总计信息。可以把此功能看成是一种当数据从数据库中返回时把相同类型的信息集中到一起的能力。下面给出了完整列表。
avg([distinct]column_name)
求所有雇员薪水的平均值。
select AVG(emp_salary)
from employee;
求取column_name中的所有值的平均值。如果使用DISTINCT选项,则只使用不同的非空的数值。
count([distinct]value)
统计雇员的数目。
select COUNT(emp_name)
from employee;
统计选择行的数目,并忽略VALUE中的空值。如果使用了DISTINCT选项
则只统计不同的非空数值。VALUE可以是列名,也可以是表达式。
max(value)
返回薪水的最大值
select MIN
emp_salary)
from employee;
从选定的VALUE中选出数值/字符的最大值,忽略空值。VALUE要求同上。
min(value)
返回薪水的最小值
select MIN(emp_salsry)
from employee;
从选定的VALUE中选出数值/字符的最小值,忽略空值。VALUE要求同上。
stddev(value)返回雇员薪水的标准偏差
select STDDEV(emp_salary)
from employee;
从选择的VALUE的标准中返回标准偏差。
variance([distinct]value)
返回雇员薪水的方差
select VARIANCE(emp_salary)
from employee;
返回所选行的所有数值的方差,忽略VALUE的空值。DISTINCT和VALUE要
求同前。
1.没有group by子句的group by函数。注意到上面的所有示例都没有使用GROUP BY命令了吧?当在查询中没有使用GROUP BY子句时,数据库就把数据表中的所有行为作为一个组来处理。通常情况下,我们并不希望是这样的。多数用户都能理解组的概念,但在使用的时候却很快就陷入麻烦中。有一个技巧是:如果有一列在GROUP BY子句中没有提到,就必须对它进行累计。换句话说,就是必须对那些不包括在GROUP BY子句中的所有列使用上面提到过的一个函数。
2.having子句。就象使用where子句检查从查询返回的个别行一样,我们也可以使用having子句为一组行指定搜索条件。例如,如果想要察看新雇佣人数超过两个的州的平均工资,就可以使用having子句。查询语句如下所示:
select state_cd,avg(salsry)
from newhire
group by state_cd
having count(state_cd) > 2;
3.可以使用group by查找重复数据。|
|思想都是先查出重复数据再操作。
4.可以使用group by删除重复数据。|