最近做了京东的24年春招题,题目如下:
题目分析
在这道题目中,我们需要从两个表中提取数据:orders 和 customers。以下是每个表的结构及字段的汉语意思:
-
orders(订单表)
order_id:订单IDcustomer_id:客户IDtotal_amount:订单总金额
-
customers(客户表)
customer_id:客户IDcity:城市
目标:计算每个城市的订单总金额。
输出要求:输出每个城市的名称及其订单总金额,按订单总金额降序排列,如果总金额相同则按城市名称升序排列。
知识点关键词:SQL连接、聚合函数、分组、排序
解答步骤
-
连接表
我们需要将
orders表和customers表连接在一起,以便获取每个订单的城市信息。使用JOIN语句通过customer_id字段连接两个表。from orders o join customers c on c.customer_id = o.customer_id -
计算城市订单总金额
使用
SUM函数计算每个城市的订单总金额。通过GROUP BY语句按城市分组,以便对每个城市的订单金额进行求和。select c.city, sum(o.total_amount) as total_order_amount group by c.city -
排序
使用
ORDER BY语句按订单总金额降序排列结果,如果总金额相同则按城市名称升序排列。order by total_order_amount desc, c.city asc
完整代码
select c.city,
sum(o.total_amount) as total_order_amount
from orders o
join customers c on c.customer_id = o.customer_id
group by c.city
order by total_order_amount desc, c.city asc
近似题目练习推荐
- 知识点:SQL连接、聚合函数、分组、日期函数
- 知识点:字符串处理、聚合函数、分组
- 知识点:SQL连接、聚合函数、分组

京公网安备 11010502036488号