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删除重复数据。|

 

 

端午节将至,愿你(包括我)在一生中有用不完的MONEY ,以后的日子风和日丽,风调雨顺,偶尔有人请吃饭,平时经常有人给你送礼,有人逗你开心,想揍谁就揍谁,永远有个最善良的爱人,在你最需要的时候有爱,没事时听听歌,寂寞时和朋友 电话短信,有时间时和朋友一起喝喝茶…咖啡…酒… 这样你就会永远开心,天天好情!提前祝端午节快乐

你可能感兴趣的:(group_by的用法)