首页 > 解决方案 > SQL 中的 Group by 返回错误:选定的非聚合值必须是关联组的一部分

问题描述

我有一个看起来像这样的表:

       date      store   flag
1    5/4/2018      a       1
2    5/4/2018      a       1
3    5/3/2018      b       1
4    5/3/2018      b       0
5    5/2/2018      a       1
6    5/2/2018      b       0

我想按日期分组并存储和总结标志的数量

即下面的table_a:

       date      store   total_flag
1    5/4/2018      a       2
3    5/3/2018      b       1
4    5/2/2018      a       1
5    5/2/2018      b       0

这就是我正在尝试的:

create multiset volatile table flag_summary as (
 sel table_a.*, SUM(table_a.flag) as total_flag
 group by date, store
)
with data primary index (date, store) on commit preserve rows;

以上给了我一个错误,“创建表失败。[3504] 选定的非聚合值必须是关联组的一部分。

标签: sqlgroup-byteradata

解决方案


您正在选择所有tableA(包括标志)。您应该只提取日期和商店,因为您想要标志的总和。

SELECT date, store, SUM(flag)
FROM tableA
GROUP BY date, store

推荐阅读