SQL数据分析概念与基础命令

版权声明:皆为本人原创,复制必究 https://blog.csdn.net/m493096871/article/details/89410027

 

 

Parch & Posey 数据库

实体关系图

实体关系图 (ERD) 是查看数据库中数据的常用方式。下面是我们将用于 Parch & Posey 数据库的 ERD。这些图可帮助你可视化正在分析的数据,包括:

  1. 表的名称。
  2. 每个表中的列。
  3. 表配合工作的方式。

你可以将下面的每个框看作一个电子表格。

注意事项

在 Parch & Posey 数据库中,共有五个表(基本上是 5 个电子表格):

  1. web_events
  2. accounts
  3. orders
  4. sales_reps
  5. region

你可以将每个表视为一个单独的电子表格。然后将每个电子表格中的列放在表名下面。例如,region 表有两列: id 和 name,而 web_events 表有四列。

将这些表格连接在一起的 "crow's foot" 表示法显示了一个表中的列与另一个表中的列之间的关联。

关于 SQL 数据库中所存储数据的几个要点:

  1. 数据库中的数据存储在类似于 Excel 电子表格的表中。
    大多数情况下,可以将数据库视为一堆 Excel 电子表格。每个电子表格都有行和列。每行保存有关交易、个人、公司等的数据。而每列所保存的数据与你关心的某一特定行相关,如名称、位置、唯一身份等。
     

  2. 同一列中的所有数据必须符合数据类型。
    将整个列认为是定量离散的或是某种字符串。这说明如果特定列中有一行字符串,那么整个列可能会更改为文本数据类型。 如果想使用此列进行数学计算,这可能会非常糟糕! 
     

  3. 列类型一致是快速使用数据库的主要原因之一。 
    数据库通常会存储海量数据。因此,知道这些列都是相同类型的数据意味着可快速从数据库获取数据。

数据库类型

SQL 数据库

数据库的类型有很多,都用于不同的用途。在本课中,我们将使用 Postgres,这是一个流行的开源数据库,具有非常完整的分析函数库。

一些最受欢迎的数据库包括::

  1. MySQL
  2. Access
  3. Oracle
  4. Microsoft SQL Server
  5. Postgres

你也可以在其他编程框架中编写 SQL,如 Python、Scala 和 HaDoop。

SQL 的关键是理解语句。这几个语句包括:

  1. CREATE TABLE 是一个在数据库中创建新表的语句。
  2. DROP TABLE 是删除数据库中表的语句。
  3. SELECT 读取并显示数据。我们将这称为查询

LIMIT 命令始终是查询的最后一部分。下面的例子仅显示 orders 表的前 10 行和所有列:

SELECT *
FROM orders
LIMIT 10;
SELECT occurred_at, account_id, channel
FROM web_events
LIMIT 15;

ORDER BY 语句可使我们按任意行排序表。如果熟悉 Excel,这与使用过滤器进行排序相似。

ORDER BY 语句始终在 SELECT 和 FROM 语句之后,但位于 LIMIT 语句之前。 学习其他命令时,这些语句的顺序将更为重要。 如果使用 LIMIT 语句,它将始终显示在最后。

SELECT id,occurred_at,total_amt_usd
FROM orders
order by total_amt_usd DESC
limit 5

DESC表示逆序

order by  按照后面的列头排序

limit  显示限制的个数

查询orders表格,按照订单日期的从新到旧降序排列,同时每个日期下的订单按照total_amt_usd降序排列,显示前5行。

SELECT *
FROM orders
ORDER BY occurred_at DESC, total_amt_usd DESC
LIMIT 5;

WHERE 语句中使用的常用符号包括:

  1. >(大于)
     
  2. <(小于)
     
  3. >=(大于或等于)
     
  4. <=(小于或等于)
     
  5. =(等于)
     
  6. !=(不等于)

通常将 WHERE 与非数字数据字段一起使用时,我们会使用 LIKENOT 或 IN 运算符。

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

name website primary_poc
Exxon Mobil www.exxonmobil.com Sung Shields
SELECT id, account_id, standard_amt_usd/standard_qty AS unit_price
FROM orders
LIMIT 10;
SELECT id, account_id,
poster_amt_usd/(standard_amt_usd + gloss_amt_usd + poster_amt_usd) AS post_per
FROM orders;

逻辑运算符简介

  1. LIKE
    可用于进行类似于使用 WHERE 和 = 的运算,但是这用于你可能  知道自己想准确查找哪些内容的情况。
     
  2. IN 
    用于执行类似于使用 WHERE 和 = 的运算,但用于多个条件的情况。
     
  3. NOT
    这与 IN 和 LIKE 一起使用,用于选择 NOT LIKE 或 NOT IN 某个条件的所有行。
     
  4. AND & BETWEEN
    可用于组合所有组合条件必须为真的运算。
     
  5. OR
    可用于组合至少一个组合条件必须为真的运算。
SELECT name
FROM accounts
WHERE name LIKE 'C%';
SELECT name
FROM accounts
WHERE name LIKE '%one%';

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

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

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

SELECT name, primary_poc, sales_rep_id
FROM accounts
WHERE name NOT IN ('Walmart', 'Target', 'Nordstrom');
WHERE column >= 6 AND column <= 10
WHERE column BETWEEN 6 AND 10

上面两个相等

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

SELECT * 
FROM accounts
WHERE name != 'C%'  AND name ='%s'  ;

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;
SELECT *
FROM orders
WHERE standard_qty = 0 AND (gloss_qty > 1000 OR poster_qty > 1000);
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%');
语句 用法 其他详情
SELECT SELECT Col1Col2, ... 提供你想要的列
FROM FROM Table 提供列存在的表
LIMIT LIMIT 10 限制返回的行数
ORDER BY ORDER BY Col 根据列对表排序。与 DESC 一起使用。
WHERE WHERE Col > 5 用于过滤结果的条件语句
LIKE WHERE Col LIKE '%me% 仅拉取文本中包含 'me' 的列
IN WHERE Col IN ('Y', 'N') 仅过滤包含 'Y' 或 'N' 列的行
NOT WHERE Col NOT IN ('Y', 'N') NOT 经常与 LIKE 和 IN 一起使用
AND WHERE Col1 > 5 AND Col2 < 3 过滤两个或多个条件必须为真的行
OR WHERE Col1 > 5 OR Col2 < 3 过滤至少一个条件必须为真的行
BETWEEN WHERE Col BETWEEN 3 AND 5 通常比使用 AND 的语法简单

猜你喜欢

转载自blog.csdn.net/m493096871/article/details/89410027