【笔记】SQL入门

SQL入门语法*

查询

SELECT *                       # ‘*’代表所有列;   #函数大小写不影响结果
FROM orders                    #加载数据

取特定的列,则:

select id,account_id,occurred_at
from orders;                 # ‘;’并不是必须的,如果环境能够一次显示多个结果,
                              # 那么这样做还可以一次运行多个命令

LIMIT函数

SELECT *
FROM web_events
LIMIT 15;

ORDER BY 函数

# 编写一个查询,返回orders 表里 total_amt_usd 最高的5个 订单。
# 包括 id、account_id 和 total_amt_usd。 
SELECT id,account_id,total_amt_usd
FROM orders
ORDER BY total_amt_usd DESC   #DESC表示从高到低排序 ,不加DESC则表示前面20个
LIMIT 20

WHERE 函数
从 orders 表提取出gloss_amt_usd大于或等于 1000 美元的前五行数据(包含所有列)

SELECT *
FROM orders
WHERE gloss_amt_usd >=1000
ORDER BY gloss_amt_usd
LIMIT 5 

从 orders 表提取出total_amt_usd小于 500 美元的前十行数据(包含所有列)

SELECT *
FROM orders
WHERE total_amt_usd <1000
ORDER BY total_amt_usd
LIMIT 10 

从 accounts 表格中筛选出 Exxon Mobil 的 name(客户名称),同时包含website 和 primary point of contact (primary_poc) 等数据。

SELECT name,website,primary_poc
FROM accounts
WHERE name='Exxon Mobil'

算数运算符与新列命名
创建一个用 standard_amt_usd 除以 standard_qty 的列,查找每个订单中标准纸张的单价。将结果限制到前 10 个订单,并包含 id 和 account_id 字段。

SELECT id, account_id, standard_amt_usd/standard_qty AS unit_price # AS为命名
FROM orders
LIMIT 10;

编写一个查询,查找每个订单海报纸的收入百分比。 只需使用以 _usd 结尾的列。 (在这个查询中试一下不使用总列)。包含 id 和 account_id 字段。

SELECT id, account_id,
poster_amt_usd/(standard_amt_usd + gloss_amt_usd + poster_amt_usd) AS post_per
FROM orders;

*** 逻辑运算符(与WHERE函数搭配使用)***
LIKE 运算符
搭配‘%’,%代表可以为任意的字符
使用 accounts 表查找,所有以 ‘C’ 开头公司名。

 SELECT *
FROM accounts
WHERE name LIKE 'C%';

名称中包含字符串 ‘one’ 的所有公司名。

SELECT *
FROM accounts
WHERE name LIKE '%one%';

所有以 ‘s’ 结尾的公司名。

SELECT name
FROM accounts
WHERE name LIKE '%s';

IN 运算符
使用 accounts 表返回 Walmart、Target 和 Nordstrom 的name(客户名称), 同时包含primary_poc, 以及sales_rep_id。

SELECT name,primary_poc,sales_rep_id
FROM accounts
WHERE name IN ('Walmart','Target','Nordstrom')

NOT 运算符(与LIKE、IN函数搭配使用,表示在这些范围之外)
使用 web_events 表查找不是通过 organic 或 adwords 渠道联系到的个人的信息

SELECT *
FROM web_events
WHERE channel NOT IN ('organic', 'adwords');

AND 和 BETWEEN 运算符
编写一个查询,返回所有orders(订单),其中 standard_qty (标准纸数量)超过 1000,poster_qty(海报纸数量) 是 0,gloss_qty (铜板高光纸数量)也是 0。

SELECT *
FROM orders
WHERE standard_qty >=1000 AND poster_qty = 0 AND gloss_qty = 0

使用accounts表查找所有不以 ‘C’ 开始但以 ‘s’ 结尾的公司名。

SELECT name
FROM accounts
WHERE name NOT LIKE 'C%' AND name LIKE '%s'

使用 web_events 表查找通过 organic 或 adwords 渠道来联系的,并在 2016 年的任何时间开通帐户的个人全部信息,并按照从最新到最旧的顺序排列。

SELECT *
FROM web_events
WHERE channel IN ('organic','adwords') AND occurred_at BETWEEN '2016-01-01' AND '2017-01-01'
ORDER BY occurred_at DESC;

OR 运算符
查找 orders表,其中 gloss_qty(铜版纸数量) 或 poster_qty (海报纸数量)大于 4000。只在结果表中包含 id 字段。

SELECT id
FROM orders
WHERE gloss_qty >= 4000 OR poster_qty >=4000

查找 orders表,其中普通纸数量 (standard_qty)为零,铜版纸数量 (gloss_qty) 或海报数量 (poster_qty)超过 1000,返回相关订单的所有信息。

SELECT *
FROM orders
WHERE (gloss_qty >= 1000 OR poster_qty >= 1000) AND
standard_qty = 0

查找 accounts表,返回符合条件的信息:name 以 ‘C’ 或 ‘W’ 开头,主要联系人 (primary contact) 包含 ‘ana’ 或 ‘Ana’,但不包含 ‘eana’。

SELECT *
FROM accounts
WHERE (name LIKE 'C%' OR name LIKE 'W%') 
           AND ((primary_poc LIKE '%ana%' OR primary_poc LIKE '%Ana%') 
           AND primary_poc NOT LIKE '%eana%');
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值