【问题标题】:How to group by one column with single aggregate function but select multiple columns on oracle?如何使用单个聚合函数按一列分组,但在 oracle 上选择多列?
【发布时间】:2017-12-29 10:15:54
【问题描述】:

我想在选择多个其他列的同时在单个列上使用聚合函数按一列分组。这在 MySQL 中通过下面的查询很容易实现。

SELECT sum(count),store,date,product FROM sales_log_bak where date > "2017-03-01" and date < "2017-04-05" group by date

但是,上面的查询在 oracle 数据库上不起作用。在 oracle 中,什么是等效的查询来实现 MySQL 在上面查询中给出的结果?

【问题讨论】:

  • 遗憾的是,当不在 strict-mode 下工作时,这可以在 MySQL 中完成。但它很丑。

标签: oracle oracle11g oracle10g


【解决方案1】:

你可以使用Analytic Functions:

SELECT sum(sales_count) OVER (PARTITION BY sales_date), 
   store, sales_date, product 
FROM sales_log_bak 
where sales_date > DATE '2017-03-01' and sales_date < DATE '2017-04-05';

注意,datecount 是 Oracle 中的保留字,不应将它们用作列名。

【讨论】:

  • 请解释一下上面的查询我无法理解OVERPARTITION BY,我以前从未遇到过这些术语。
  • @Flame - 你看过 Wernfried 链接到的文档吗?
猜你喜欢
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 2013-06-28
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 2014-02-08
相关资源
最近更新 更多