Sql 如何有效地执行两个查询的并集(使用和不使用group by)

Sql 如何有效地执行两个查询的并集(使用和不使用group by),sql,hive,group-by,subquery,union,Sql,Hive,Group By,Subquery,Union,我有一个查询,它在两个select语句之间执行并集,一个使用GROUPBY,另一个不使用GROUPBY。问题是我在两个select语句中选择相同的列并使用相同的函数。感觉我在复制代码,我想知道是否有更好的方法来写这个 我尝试使用普通的union函数来处理两个select语句,但两个select语句使用相同的函数。 有没有一种方法可以在不重复的情况下简化以下查询 例如: select sum(col1), sum(col2).... from table union select sum(c

我有一个查询,它在两个select语句之间执行并集,一个使用GROUPBY,另一个不使用GROUPBY。问题是我在两个select语句中选择相同的列并使用相同的函数。感觉我在复制代码,我想知道是否有更好的方法来写这个

我尝试使用普通的union函数来处理两个select语句,但两个select语句使用相同的函数。 有没有一种方法可以在不重复的情况下简化以下查询

例如:

select 
sum(col1), sum(col2)....
from table

union

select sum(col1), sum(col2)...
from table
group by class
我需要一个结合上述结果得出的表格。 第二个查询可能有多个类别,第一个查询只生成一个聚合行 目的是将总人口的收入和其他细节与人口中的一个或多个类别进行比较

提前感谢:)

您可以通过将子句添加到您的
分组中,它将在输出的末尾添加一个聚合行,即

SELECT SUM(col1), SUM(col2)...
FROM table
GROUP BY class WITH ROLLUP
您可以通过
将子句添加到您的
分组中,它将在输出的末尾添加一个聚合行,即

SELECT SUM(col1), SUM(col2)...
FROM table
GROUP BY class WITH ROLLUP

您尚未提供要检查的样本数据,但一种方法可以是在
分组方式中使用
CASE WHEN

以下
UNION

SELECT Sum(col1) 
FROM   tablename 
WHERE  id <> 1 
UNION 
SELECT Sum(col1) 
FROM   tablename 
WHERE  id = 1 
GROUP  BY class 

您尚未提供要检查的样本数据,但一种方法可以是在
分组方式中使用
CASE WHEN

以下
UNION

SELECT Sum(col1) 
FROM   tablename 
WHERE  id <> 1 
UNION 
SELECT Sum(col1) 
FROM   tablename 
WHERE  id = 1 
GROUP  BY class 

@阿拉文巴拉吉不担心。很高兴我能帮忙。@AravindBalaji不用担心。很高兴我能帮忙。