题解 | #返回每个顾客不同订单的总金额#

返回每个顾客不同订单的总金额

https://www.nowcoder.com/practice/ce313253a81c4947b20e801cd4da7894


		
# 参考了一下其他人的代码:
解1:先在OrderItems中计算每个订单的总额,使用WITH 表名 AS ()  新建一个表。
将新表与Orders表连接,根据订单总额降序排列,返回cust_id。

WITH total_order_price AS(
    SELECT
      order_num,
      SUM(item_price * quantity) total_ordered
    FROM
      OrderItems
    GROUP BY
      order_num
  )
SELECT
  o.cust_id,
  tp.total_ordered
FROM
  Orders o
  LEFT JOIN total_order_price tp ON o.order_num = tp.order_num
ORDER BY
  tp.total_ordered DESC;

解2:使用子查询

1) 基础版子查询
SELECT
  b.cust_id cust_id,
  a.total_ordered total_ordered 
FROM
  Orders b,(
    SELECT
        order_num,
        SUM(item_price*quantity) total_ordered
    FROM OrderItems
    GROUP BY order_num
  ) a
WHERE 
    b.order_num = a.order_num
ORDER BY
    total_ordered DESC;


2) 最简洁的子查询写法
SELECT
  cust_id,
  (SELECT
      SUM(item_price * quantity) 
    FROM
      OrderItems a
    WHERE a.order_num = b.order_num) total_ordered  #聚合的字段放在select后,用where+关联条件关联即可
FROM
  Orders b
ORDER BY
  total_ordered DESC;



全部评论
请问牛主,平时都是用什么数据库语言。
点赞 回复 分享
发布于 2022-10-21 23:52 湖南

相关推荐

书海为家:实习是成为大厂正式员工很好的敲门砖,看您的简历中有一段实习经历,挺好的。我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己实习时做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务