gpt4 book ai didi

sql-server - 在 SQL Server 中将 DISTINCT 与 GROUP BY 一起使用

转载 作者:行者123 更新时间:2023-12-02 07:28:09 24 4
gpt4 key购买 nike

在 SQL 中同时使用 DISTINCT 和 GROUP BY 有什么目的吗?

下面是示例代码

SELECT DISTINCT Actors
FROM MovieDetails
GROUP BY Actors

有谁知道需要同时使用 DISTINCT 和 GROUP BY 才能获得任何特定所需结果的情况吗?

(分别了解DISTINCT和GROUP BY的一般用法)

最佳答案

使用 DISTINCTGROUP BY 子句中删除重复的 GROUPING SETS

在一个完全愚蠢的示例中,通常使用 GROUPING SETS() (或特殊分组集 ROLLUP()CUBE()特别是),您可以使用 DISTINCT 来再次删除分组集产生的重复值:

SELECT DISTINCT actors
FROM (VALUES('a'), ('a'), ('b'), ('b')) t(actors)
GROUP BY CUBE(actors, actors)

使用DISTINCT:

actors
------
NULL
a
b

没有DISTINCT:

actors
------
a
b
NULL
a
b
a
b

但是,除了提出学术观点之外,你为什么还要这样做呢?

使用DISTINCT查找唯一的聚合函数值

在一个不太牵强的示例中,您可能对DISTINCT聚合值感兴趣,例如,有多少不同重复的 Actor 数量?

SELECT DISTINCT COUNT(*)
FROM (VALUES('a'), ('a'), ('b'), ('b')) t(actors)
GROUP BY actors

答案:

count
-----
2

使用 DISTINCT 删除具有多个 GROUP BY 列的重复项

当然,还有一种情况:

SELECT DISTINCT actors, COUNT(*)
FROM (VALUES('a', 1), ('a', 1), ('b', 1), ('b', 2)) t(actors, id)
GROUP BY actors, id

使用DISTINCT:

actors  count
-------------
a 2
b 1

没有DISTINCT:

actors  count
-------------
a 2
b 1
b 1

有关更多详细信息,我写了一些博客文章,例如about GROUPING SETS and how they influence the GROUP BY operation ,或about the logical order of SQL operations (as opposed to the lexical order of operations) .

关于sql-server - 在 SQL Server 中将 DISTINCT 与 GROUP BY 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32702310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com