【问题标题】:Select customer with highest price of all his orders选择所有订单中价格最高的客户
【发布时间】:2019-06-21 08:38:57
【问题描述】:

我想列出他的订单价格总和最高的客户ID。请看下图。

【问题讨论】:

  • 向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example
  • 以文本形式发布表格和数据READ THIS
  • 你的 rdbms 是什么? Sql Server、postgres、oracle?
  • Oracle 数据库
  • 你试过了吗?提示:将 select 与 sum 和 order by 一起使用。

标签: sql oracle select greatest-n-per-group


【解决方案1】:

SQL DEMO

 SELECT *
 FROM (
         SELECT "customerid", SUM("price")
         FROM  Orders
         GROUP BY "customerid"
         ORDER BY SUM("price") DESC
      ) T
WHERE ROWNUM <= 1      

【讨论】:

  • 如果我想选择客户名称?
  • 我没有在你的设计上看到客户的名字 :(
【解决方案2】:

您需要按 customer_id 分组以获取每个客户的所有价格。 然后对这些价格求和,用 max(sum(price)) 过滤,或者按 sum(price) 的降序获取第一行。

--对于甲骨文

select * from (Select c.name,c.id,sum(o.price) from Customer c
inner join order o on o.customer_id=c.id
group by c.name,c.id
order by sum(o.price)desc
)where rownum =1

--用于sql server和mysql

Select top 1 c.name,c.id,sum(o.price) from Customer c
inner join order o on o.customer_id=c.id
group by c.name,c.id
order by sum(o.price)desc

【讨论】:

    猜你喜欢
    • 2021-09-20
    • 2013-02-16
    • 1970-01-01
    • 2020-07-04
    • 2011-03-13
    • 2022-01-08
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多