GROUP BY 语句

对于该语句的理解真的一下子困难了,自己看了半个小时都不能很好地明白。还是朋友们强悍啊,下面是从网上找到的一些讲解给大家分享一下。

 GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想 你用了GROUP BY 按 ITEM.ITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示 A B 1 abc 1 bcd 1 asdfg select A,B from table group by A 你说这样查出来是什么结果, A B abc 1 bcd asdfg 右边3条如何变成一条,所以需要用到聚合函数,比如 select A,count(B) 数量 from table group by A 这样的结果就是 A 数量 1 3 group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面 你的问题应该这么解决,具体的我没有上机操作,DISTINCT有可能放到ID前面,你在具体操作下: SELECT ID,DISTINCT NAME FROM TAB; 对于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删除重复数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值