LIMIT 10
只看10行数据。
写在最后,功能是指定查看前几行观测。
ORDER BY
位于LIMIT之前
默认按升序排列:从a-z,从0-1,从早到晚
ORDER BY aa , bb DESC
一次排序多列:降序只对前面一列(bb)起作用;aa为升序,bb为降序。
WHERE
放在FROM后面,ORDER BY前面;功能为筛选行。
在使用WHERE时不用排序也可以筛选。
WHERE通常与IN LIKE一起用,见后面笔记。
生成新列:
SELECT a/b AS c
生成一列名叫c,c的值是a/b得到的。
AS 起名字
LIKE
WHERE name LIKE '%google%'
挑选出name中类似 aaagoogleccc的观测,%表示任意字符
IN
WHERE name IN('aa','bb')
挑选name中aa 和bb的观测,注意加‘’ 和,
NOT LIKE
NOT IN
取反
练习:
1 编写一个查询,返回按从最新到最早排序的 订单 中的前 5 行,但需首先列出每个日期的最大 total_amt_usd。
SELECT occurred_at,total_amt_usd
FROM orders
ORDER BY occurred_at DESC,total_amt_usd DESC
LIMIT 5;
2 从 订单 表提取出大于或等于 1000 的 gloss_amt_usd 美元数额的前五行数据(包含所有列)。
3 从 订单 表提取出小于 500 的 total_amt_usd美元数额的前十行数据(包含所有列)。
SELECT *
FROM orders
WHERE gloss_amt_usd >= 1000
LIMIT 5;
SELECT *
FROM orders
WHERE total_amt_usd < 500
LIMIT 10;
4过滤账户(accounts )表格,
从该表格中筛选出 Exxon Mobil 的 name、website 和 primary point of contact (primary_poc)。
SELECT name,website,primary_poc
FROM accounts
WHERE name='Exxon Mobil';
使用 accounts (客户) 表查找
5 所有以 'C' 开头公司名。
6 名称中包含字符串 'one' 的所有公司名。
7 所有以 's' 结尾的公司名。
SELECT *
FROM accounts
WHERE name LIKE 'C%';
SELECT *
FROM accounts
WHERE name LIKE '%one%';
SELECT *
FROM accounts
WHERE name LIKE '%s';
我们可以使用这个新运算符来提取前两个概念中不属于查询内容的所有行。
8 使用客户表查找除 Walmart、Target 和 Nordstrom 之外的所有商店的客户名称、主要零售店和销售代表 id。
9 使用 web_events 表查找除通过任何方法联系的个人的所有信息,除了使用 organic 或 adwords 方法。
使用客户表查找:
10 所有不以 'C' 开头的公司名。
11 所有名称中不包含字符串 'one' 的公司名。
12 所有不以 's' 结尾的公司名。
SELECT name,primary_poc,sales_rep_id
FROM accounts
WHERE name NOT IN('Walmart','Target','Nordstrom');
SELECT *
FROM web_events
WHERE channel NOT IN('organic','adwords');
SELECT name
FROM accounts
WHERE name NOT LIKE 'C%';
SELECT name
FROM accounts
WHERE name NOT LIKE '%one%';
SELECT name
FROM accounts
WHERE name NOT LIKE '%s';
工具能学都要学,在改用什么工具的时候就用什么工具,觉得查询筛选数据还是用SQL语言比较效率。那就应该去了解和掌握能解决问题的利器才是。R的优势是包比较多,SAS是专门的企业专门用。