group by 使用 rollup 统计结果不对
时间: 2023-07-30 15:05:16 浏览: 219
是的,使用 `rollup` 函数进行分组统计时,会在结果中添加一行汇总数据,但是这种汇总数据可能并不是您需要的结果。如果您使用 `rollup` 函数进行分组统计,统计结果不正确,建议使用 `grouping sets` 函数进行分组统计。
`grouping sets` 函数可以在一个 `SELECT` 语句中指定多个分组条件,从而可以得到更准确的统计结果。例如,使用以下语句进行分组统计:
```
SELECT
'${data_date}' AS sum_date,
NVL(t1.one_degree_tenant, '合计') AS zuhuguishu,
COUNT(DISTINCT tenant_name) AS rzxm
FROM edc_dmp.wsf_tenant_user_role_df t1
WHERE t1.sum_date = '${data_date}'-1
GROUP BY GROUPING SETS(t1.one_degree_tenant, ())
```
上述查询中,`GROUP BY GROUPING SETS(t1.one_degree_tenant, ())` 表示按照 `t1.one_degree_tenant` 进行分组统计,并添加一个空的分组条件,从而避免了使用 `rollup` 函数导致的统计结果不准确的问题。
相关问题
oracle中group by with rollup
在Oracle中,使用group by语句可以对数据进行分组统计。而通过结合rollup关键字,可以在分组统计的基础上再次进行汇总统计,即在每个分组下都会有统计汇总。 举个例子,如果我们使用"group by rollup(id)",那么将会对id进行分组统计,并在每个分组下还会进行一次总计。这样可以得到更详细的统计结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Oracle Group By 用法之 —— Rollup](https://blog.csdn.net/weixin_39649478/article/details/116469600)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [oracle 中 group by rollup(id)与mysql 的 group by with rollup id](https://blog.csdn.net/kang1011/article/details/106437125)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
with rollup和group by
WITH ROLLUP 和 GROUP BY 是用于对 SQL 查询结果进行组和汇总的两个关键字。
GROUP BY 用于将查询结果按照指定的列进行分组。它可以让我们根据某些列的值将查询结果分为多个小组。例如,我们可以使用 GROUP BY 对销售数据按照产品类型进行分组,以便进一步分析和统计不同产品类型的销售情况。
WITH ROLLUP 则是用于在 GROUP BY 的基础上添加小计和总计行。它会在每个分组的末尾添加一个小计行,并在最后添加一个总计行,这样可以更方便地查看各个分组的汇总数据。通过使用 ROLLUP,我们可以在一次查询中同时得到详细数据和汇总数据,简化了查询过程。
下面是一个示例:
```
SELECT column1, column2, SUM(column3) AS total
FROM table
GROUP BY column1, column2 WITH ROLLUP;
```
在这个示例中,我们根据 column1 和 column2 进行分组,并计算每个分组中 column3 的总和。同时,使用 WITH ROLLUP 关键字添加了小计和总计行。
注意,GROUP BY 子句必须在 SELECT 语句的后面,而 WITH ROLLUP 关键字必须在 GROUP BY 子句的后面。
希望能够解答你的问题!如果还有其他问题,请继续提问。
阅读全文