SQL入门者求助:多表关联查询问题解答(附已完成示例)
SQL入门练习求助
我是SQL完全入门新手,正在通过线上学习资料练习编写查询语句,已完成第a题,现卡在剩余b-e题,请求帮助编写其中任意一题的SQL语句。数据库表结构见附图。
题目要求
- b) 获取为居住在Kyoto的客户下过单笔金额至少$500订单的agent的aid和姓名;
- c) 获取享受低于10%折扣且累计订购梳子至少1000件的客户所在城市;
- d) 获取居住在Dallas的客户通过居住在Tokyo的agent订购过的产品名称;
- e) 获取每位客户的姓名、所在城市及所有订单的总金额,并按金额降序排列。
已完成的a题
题目:获取居住在同一城市的所有客户cid与agent aid的配对。
SQL语句:
SELECT customer.cid, agent.aid FROM customers, agent WHERE customer.city = agent.city
查询结果:
| cid | aid |
|---|---|
| c001 | a05 |
| c004 | a05 |
| c002 | a06 |
| c003 | a06 |
示例解答(以e题为例)
SQL语句:
SELECT c.name, c.city, SUM(o.amount) AS total_order_amount FROM customers c JOIN orders o ON c.cid = o.cid GROUP BY c.cid, c.name, c.city ORDER BY total_order_amount DESC;
语句说明
- 用
JOIN关联客户表和订单表,通过客户IDcid匹配关联数据; SUM(o.amount)计算每个客户的所有订单总金额,并用AS给结果列命名为total_order_amount;GROUP BY按客户的唯一标识cid及姓名、城市分组,保证每个客户仅返回一条汇总记录;ORDER BY ... DESC让结果按总金额从高到低排序。
内容的提问来源于stack exchange,提问作者voi tech
相关产品推荐
相关产品推荐

