【问题标题】:Summing UP rows in Oracle SQL query在 Oracle SQL 查询中对 UP 行求和
【发布时间】:2021-04-02 00:36:16
【问题描述】:

我有一个如下所示的 Oracle (12c) 表:

ID Amt Identifier
ABC 50 20210331
ABC 125 20210331
ABC 75 20201205
ABC 100 20210401
DEF 50 202103AA
DEF 125 202103BB
DEF 75 202012BB
DEF 500 202104AC

我需要 col1 的总金额和 Oracle SQL 中标识符的第一行,如下所示

ID Amt Identifier
ABC 350 20210331
DEF 750 202103AA

表结构:

ID varchar2

金额

标识符 varcahr2

提前致谢

【问题讨论】:

  • 当您说“标识符的第一行”时,“第一”是什么意思? (您几乎肯定是指“第一行中的标识符值”,表中没有“标识符行”;但这仍然不能解释 first 的含义。)请注意,在 Gordon Linoff 的答案,他只是选择最少的标识符 - 但这与您在问题中发布的(可能是期望的)输出相矛盾。
  • 我的意思是当 ID 随 SUM(Amt) 一起变化时 Identifier 列值的出现
  • 您似乎没有理解这个问题。当我们显示行时,它们以某种(随机!)顺序出现,因为我们不能将它们显示在彼此之上;但在数据库中,行在给定 ID 内没有“自然”顺序。没有“第一次”或“第二次”或“第三次”出现。当您按什么订购它们时,“第一”或“第二”等?那就是我的意思。想想篮子里的高尔夫球——哪个是“第一”或“第二”等?您需要以同样的方式考虑表中的行。仅当指定排序时才会对它们进行排序。

标签: sql oracle


【解决方案1】:

您在寻找聚合吗?

select id, sum(amt), min(identifier)
from t
group by id;

【讨论】:

  • min(identifier) 不会产生 OP 在他的问题中发布的“期望输出”。事实上,无论哪种情况,他所展示的既不是min,也不是max。它是“第一行”(正如他在问题中所说),以某种未定义的方式。你注意到了吗?如果是这样,我在您的回复中没有看到任何提及。如果你没有看到它 - 为什么不呢?你看了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 2020-06-28
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 2016-03-15
相关资源
最近更新 更多