SQL总和不同

时间:2014-08-20 22:06:58

标签: sql sas

我想问一个我在任何地方都找不到的快速澄清问题。

考虑这个案例:

    proc sql;
    create table tableOne as
    select distinct pol_state, year,
    sum(EPTotal) as epa,
    sum(Veh_BItotloss) as bia
    from someTable
    group by pol_state, year;

我的问题是,对于所有总和,还有不同的解释吗?陈述问题的另一种方式是:我们选择pol_state& year& epa& bia的独特组合吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

区别对此查询有些误解......

select field from table group by field  

将返回与

相同的内容
select distinct field from table.  

如果您的表格与pol_state,year,EPTotal,Veh_BItotloss完全重复,并且如下所示:

1,1,5,5
1,1,8,4
1,1,8,4

您的查询将返回总和(eptotal)为21(5 + 8 + 8)。如果您认为第3行是第二行的副本,并且您想要返回总和13(5 + 8,忽略第二行8),那么您希望执行' distinct'总和之前的子查询中的逻辑:

create table tableOne as
select distinct pol_state, year,
sum(EPTotal) as epa,
sum(Veh_BItotloss) as bia
from (select pol_state, year,EPTotal,Veh_BItotloss from table group by pol_state, year,EPTotal,Veh_BItotloss ) a
 group by pol_state, year

答案 1 :(得分:0)

以下是the conceptual order or evaluation of a select statement的参考资料。

在您的情况下,行按pol_state和year分组,然后求和,然后选择不同的行。在你的情况下,不同的是没有做任何事情,因为每隔一列都是一个聚合。

所以,不。你只是得到了不同的pol_state和年份。