博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL join 练习
阅读量:5263 次
发布时间:2019-06-14

本文共 2892 字,大约阅读时间需要 9 分钟。

 

一 SQL join练习

1.尝试获取 accounts 表格中的所有数据,以及 orders 表格中的所有数据。

SELECT orders.*, accounts.*FROM accountsJOIN ordersON accounts.id = orders.account_id;

2.尝试从 orders 表格中获取 standard_qty、gloss_qty 和 poster_qty,并从 accounts 表格中获取 website 和 primary_poc。

SELECT orders.standard_qty, orders.gloss_qty,orders.poster_qty,  accounts.website,accounts.primary_pocFROM ordersJOIN accountsON orders.account_id = accounts.id

3.为与客户名称 Walmart 相关的所有 web_events 创建一个表格。表格应该包含三列:primary_poc、事件时间和每个事件的渠道。此外,你可以选择添加第四列,确保仅选中了 Walmart 事件。

 

SELECT a.primary_poc, w.occurred_at, w.channel, a.nameFROM web_events wJOIN accounts aON w.account_id = a.idWHERE a.name = 'Walmart';

 

4.为每个销售代表对应的区域以及相关的客户创建一个表格,最终表格应该包含三列:区域名称、销售代表名称,以及客户名称。根据客户名称按字母顺序 (A-Z) 排序。

SELECT r.name region, s.name rep, a.name accountFROM sales_reps sJOIN region rON s.region_id = r.idJOIN accounts aON a.sales_rep_id = s.idORDER BY a.name;

 

5.提供每个订单的每个区域名称,以及客户名称和订单的单价 (total_amt_usd/total)。最终表格应该包含三列:区域名称、客户名称和单价。少数几个客户的总订单数为 0,因此我除以的是 (total + 0.01) 以确保没有除以 0。

SELECT r.name region, a.name account,o.total_amt_usd/(o.total + 0.01) unit_priceFROM region rJOIN sales_reps sON s.region_id = r.idJOIN accounts aON a.sales_rep_id = s.idJOIN orders oON o.account_id = a.id;

 

加大难度,将上面的结合起来。

1.为每个销售代表对应的区域以及相关的客户创建一个表格,这次仅针对 Midwest 区域。最终表格应该包含三列:区域名称、销售代表姓名,以及客户名称。根据客户名称按字母顺序 (A-Z) 排序。

SELECT r.name region, s.name rep, a.name accountFROM sales_reps sJOIN region rON s.region_id = r.idJOIN accounts aON a.sales_rep_id = s.idWHERE r.name = 'Midwest'ORDER BY a.name;

 

2.为每个销售代表对应的区域以及相关的客户创建一个表格,这次仅针对 Midwest 区域,并且销售代表的名字以 S 开头。最终表格应该包含三列:区域名称、销售代表姓名,以及客户名称。根据客户名称按字母顺序 (A-Z) 排序。

SELECT r.name region, s.name rep, a.name accountFROM sales_reps sJOIN region rON s.region_id = r.idJOIN accounts aON a.sales_rep_id = s.idWHERE r.name = 'Midwest' AND s.name LIKE 'S%'ORDER BY a.name;

 

3.为每个销售代表对应的区域以及相关的客户创建一个表格,这次仅针对 Midwest 区域,并且销售代表的姓以 K 开头。最终表格应该包含三列:区域名称、销售代表姓名,以及客户名称。根据客户名称按字母顺序 (A-Z) 排序。

SELECT r.name region, s.name rep, a.name accountFROM sales_reps sJOIN region rON s.region_id = r.idJOIN accounts aON a.sales_rep_id = s.idWHERE r.name = 'Midwest' AND s.name LIKE '% K%'ORDER BY a.name;

 

4.提供每个订单的每个区域的名称,以及客户名称和所支付的单价 (total_amt_usd/total)。但是,只针对标准订单数量超过 100 的情况提供结果。最终表格应该包含三列:区域名称、客户名称和单价。为了避免除以 0 个订单,这里可以在分子上加上 0.01(total_amt_usd/(total+0.01)。

SELECT r.name region, a.name account, o.total_amt_usd/(o.total + 0.01) unit_priceFROM region rJOIN sales_reps sON s.region_id = r.idJOIN accounts aON a.sales_rep_id = s.idJOIN orders oON o.account_id = a.idWHERE o.standard_qty > 100;

 

5.找出发生在 2015 年的所有订单。最终表格应该包含 4 列:occurred_at、account name、order total和 order total_amt_usd。

SELECT w.occurred_at, a.name, o.total, o.total_amt_usdFROM accounts aJOIN orders oON o.account_id = a.idJOIN web_events wON a.id = w.account_idWHERE w.occurred_at BETWEEN '01-01-2015' AND '01-01-2016'ORDER BY w.occurred_at DESC;

 

转载于:https://www.cnblogs.com/zqalq/p/9067493.html

你可能感兴趣的文章
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
一种高效的序列化方式——MessagePack
查看>>
2019年春季学期第四周作业
查看>>
2019春第十周作业
查看>>
解决ThinkPHP关闭调试模式时报错的问题汇总
查看>>
【APT】SqlServer游标使用
查看>>
关于ExecuteNonQuery()返回值为-1
查看>>
Firefox修復QQ快速登錄
查看>>
PAT——1060. 爱丁顿数
查看>>
分布式技术追踪 2017年第二十期
查看>>