首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >参考Amazon Redshift查询中的聚合结果?

参考Amazon Redshift查询中的聚合结果?
EN

Stack Overflow用户
提问于 2017-06-01 00:03:40
回答 1查看 391关注 0票数 0

在其他postgresql DBMSes (例如Netezza)中,我可以这样做而不会出错:

select store_id
      ,sum(sales) as total_sales
      ,count(distinct(txn_id)) as d_txns
      ,total_sales/d_txns as avg_basket
from my_tlog
group by 1

也就是说,我可以在定义聚合值的同一个SQL查询中使用聚合值。

然而,当我在Amazon Redshift上做同样的事情时,我得到了错误的"Column total_sales I not exist...“它不是,这是正确的;它不是一个真正的列。但是,有没有办法保留这种习惯用法,而不是重构查询呢?我这么问是因为会有很多代码需要修改。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-02 13:29:25

就我个人而言,我喜欢netezza中的结构。这是紧凑的,语法没有歧义:在当前查询中,任何“dublicate”列名都将默认为(new)别名,如果需要引用底层表的列,只需将表名放在列的前面。上面的示例将变成:

select store_id
  ,sum(sales) as sales                ---- dublicate name
  ,count(distinct(txn_id)) as d_txns
  ,my_tlog.sales/d_txns as avg_basket --- this illustrates but may not make sense
from my_tlog
group by 1

我最近离开了sql server,在那个数据库上,我使用了这样的结构,以避免重复表达式:

Select *, total_sales/d_txns as avg_basket
From (
    select store_id
    ,sum(sales) as total_sales
    ,count(distinct(txn_id)) as d_txns
    from my_tlog
    group by 1
)x

大多数(如果不是所有的)数据库都将支持这种构造,并且已经支持了10年或更长时间

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44289591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档