GROUP BY和DISTINCT有什么区别?

Sri*_*asR 4 sql teradata

我有以下数据的表格

empid   empname deptid   address
--------------------------------
aa76    John     6       34567
aa75    rob      4       23456
aa71    smith    3       12345
aa74    dave     2       12345
a77     blake    2       12345
aa73    andrew   3       12345
aa90    sam      1       12345
aa72    will     6       34567
aa70    rahul    5       34567
Run Code Online (Sandbox Code Playgroud)

我使用了以下查询:

select deptid, EMPID ,EMPNAME ,ADDRESS
from mytable
group by 1,2,3,4
Run Code Online (Sandbox Code Playgroud)

结果如下:

deptid  empid  empname address
------------------------------
1       aa90   sam      12345
2       aa74   dave     12345
2       aa77   blake    12345
3       aa71   smith    12345
3       aa73   andrew   12345
4       aa75   rob      23456
5       aa70   rahul    34567
6       aa76   John     34567
6       aa72   will     34567
Run Code Online (Sandbox Code Playgroud)

并为查询:

select distinct (deptid),EMPID,EMPNAME,ADDRESS
from mytable
Run Code Online (Sandbox Code Playgroud)

结果集是:

deptid empid empname address   
----------------------------
1      aa90  sam     12345
2      aa74  dave    12345
2      aa77  blake   12345
3      aa71  smith   12345
3      aa73  andrew  12345
4      aa75  rob     23456
5      aa70  rahul   34567
6      aa72  will    34567
6      aa76  John    34567
Run Code Online (Sandbox Code Playgroud)

在我给DISTINCTDEPTID 的第二个查询中,为什么我得到重复的DEPTID ...

你能解释一下吗?

Rob*_*vey 9

DISTINCT消除重复的行. GROUP BY分组唯一记录,并允许您执行聚合函数.


Ant*_*ton 6

DISTINCT 在整个记录中引用不同的记录,而不是记录中的不同字段.