sql - GROUP BY 和 DISTINCT 有什么区别?

标签 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

我使用了以下查询:
select deptid, EMPID ,EMPNAME ,ADDRESS
from mytable
group by 1,2,3,4

这给出了结果:
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

对于查询:
select distinct (deptid),EMPID,EMPNAME,ADDRESS
from mytable

结果集是:
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

在第二个查询中,虽然我已经为 DEPTID 提供了 DISTINCT,但我怎么会得到重复的 DEPTID...

你能解释一下吗?

最佳答案

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

关于sql - GROUP BY 和 DISTINCT 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1720105/

相关文章:

sql - 如何将 teradata sql 查询的输出链接到 Excel 工作表?

teradata - 如何创建或替换表

sql - 使用excel连接远程sql数据库

mysql - Mysql中如何将一张表的字段复制到另一张表?

sql - 有没有一种方法可以在 Teradata 中使用一个命令删除所有 volatile 表?

sql - Teradata:如何备份使用标识列的表?

odbc - 使用 Teradata ODBC 与 Teradata 数据库的 SAS 连接

SQL - 按关系过滤

mysql - 使用mysql更新触发器

mysql - 如果列为空,则返回特定字符串的 SQL 查询?