关于sql当中的group by 和partition by 的区别。

Posted gxg123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于sql当中的group by 和partition by 的区别。相关的知识,希望对你有一定的参考价值。

今天在做一个实验的时候碰到了关于group by 和partition by 的区别,简单的总结一下。

实验的题目是,按照类型进行分组,然后对其金额进行累加。然后输出类型对应的金额总和:

    SELECT TRANS_TYPE, SUM(TRANS_AMT) FROM UTTDB.UTT_TRANS_LOG GROUP BY TRANS_TYPE

这个输出的结果是按照不同的交易类型,然后对金额进行累加。

SELECT
    TRANS_TYPE,
    SUM(TRANS_AMT) OVER (PARTITION BY TRANS_TYPE ) AS sumcount
FROM
    UTTDB.UTT_TRANS_LOG

这个是用 PARTITION BY进行分组,然后统计。他的运行结果如下:

我们可以看出他是对数据进行分组,然后累加求和,但是他不会去重,会把这个字段的所有的值都显示出来。

综上的这样额结果,group by 会分组统计,然后对字段的值去重操作。只显示唯一的类型。

而对于partition by 来说的话,他只是对要分组的字段分组,然后累加出来,对前面类型字段并不统一去重。

 

以上是关于关于sql当中的group by 和partition by 的区别。的主要内容,如果未能解决你的问题,请参考以下文章

关于Oracle的SQL语句中group by的空值问题请教?

SQL server 关于 GROUP BY 详细讲解和用法

关于mysql group by 的设置

关于使用多个 SQL GROUP BY 语句的问题

sql查询中如何用group by查询出完整的一行记录?

SQL中的group by为啥是按照分组的第二个字段排序的呢?