4分钟阅读
用实际例子解释
> Photo by Carl Heyerdahl on Unsplash
SQL是由关系数据库管理系统使用的编程语言。它提供了许多功能和方法,这些功能和方法在存储在关系数据库中存储的数据。
SQL不仅仅是一个查询语言。我们也可以使用它来过滤,操纵和分析数据。在本文中,我们将超过3个SQL函数,非常适合高效的数据分析。
我们将涵盖的功能是:
- 合并
- 案例
- row_number.
我创建了两个样本表并用模拟数据填充它们。让我们先看看这些表。
> products table (image by author)
> sales table (image by author)
该表包含来自两个不同商店的销售和产品数据。
1.合并 coalesce
考虑我们需要向销售表加入产品表的情况。它们与产品代码相关,因此我们基于此列加入表。
SELECT P.*, S.storecode, s.date, s.salesqty, s.salesrevenue FROM products P LEFT JOIN sales S ON P.productcode = S.productcode;
> (image by author)
并非每个产品都在给定日期销售。对于这些产品,销售表中的列包含空值(上面的屏幕截图中空)。
我们可以使用CoaleSce函数作为加入表的结果来处理空值。在我们的案例中,我们可以用零填充销售数量和销售收入列。日期列可以填充在其他行中的日期。
SELECT P.*, S.storecode,
coalesce(s.date, '2021-05-10') as date,
coalesce(s.salesqty,0) as salesqty,
coalesce(s.salesrevenue, 0) as salesrevenue
FROM Products P
LEFT JOIN Sales S
ON P.productcode = S.productcode;
> (image by authot)
空小区填充有聚结功能中的指定值。我已经把商店代码留给了空。
2.CASE WHEN
功能允许基于给定条件更新值的情况。它类似于Python中的if-else语句。
假设我们想从销售表中选择所有列,并根据销售收入创建一个附加栏目。如果收入高于5,则此列需要“高”值。否则,它充满了“常规”。
我们可以使用如下功能进行此操作:
SELECT *, CASE WHEN salesrevenue > 5
THEN 'high' ELSE 'regular' END
AS salesgroupFROM Sales;
> (image by author)
在上面查询中的语句执行以下步骤时,请执行以下步骤:
- 创建一个名为“salesgroup”的列
- 当销售收入列中的值超过5时,将“高”分配给此列
- 否则(即else)分配“常规”
3. row_number.
row_number函数允许基于特定列中的值为行分配排名。我们可以通过与分区组合来使其更灵活或有用。
看一下销售表:
> sales table (image by author)
让我们假设我们需要根据销售收入分配一个级别。我们希望为不同的产品组分开等级。因此,水果和蔬菜将在自己内部排名。
第一步是从产品表中使用产品组列。然后,我们将使用row_number函数。
SELECT S.*, P.productgroup,
ROW_NUMBER() OVER(PARTITION BY P.productgroup ORDER BY salesrevenue DESC)
AS salesrank
FROM sales S
LEFT JOIN products P
ON S.productcode = P.productcode;
> (image by author)
在每个组中,第一个等级被分配给具有最高销售收入的行。然后,它相应地增加了。
结论
SQL是数据科学生态系统中的强大工具。它绝对是数据科学家的必备技巧。我们应该使用SQL不仅用于从数据库中检索数据,还要使用数据分析和操作。
SQL能够执行几乎可以使用流行数据分析库(如Python Pandas和R数据表)完成的所有操作。
好了,这篇文章的内容营销圈就和大家分享到这里,如果大家对网络推广引流和网络创业项目感兴趣,可以添加微信:Sum8338 备注:营销圈引流学习,我拉你进直播课程学习群,每周135晚上都是有实战的推广引流技术和网络创业项目课程分享,当然是免费学!