小米科技|用于数据分析任务的常用 SQL 函数

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

文章图片

小米科技|用于数据分析任务的常用 SQL 函数

介绍

与21世纪数据相关的一切和一切已成为主要相关性 。 任何数据科学研究者的关键技能之一是掌握 SQL 函数 , 以便进行高效的数据检索 。 SQL 被广泛用于直接从数据库进行查询 , 因此是数据分析任务最常用的语言之一 。 但它有其自身的复杂性和细微差别 。

当涉及到 SQL 函数时 , 它们太多 。 您需要在正确的时间知道正确的功能 , 以实现您正在寻找的目标 。 但是 , 我们大多数人 , 包括我有一个倾向 , 跳过这个话题或保持它挂 , 直到一个遥远的未来 。 相信我 , 在学习之旅中让这些话题不归 , 是一个错误 。

因此 , 在这篇文章中 , 我将介绍一些最常见的 SQL 函数 , 您通常用于数据分析任务 。如果您对以课程格式学习 SQL 感兴趣 , 请参阅我们的课程 –
目录

  • 介绍数据集
  • SQL 中的聚合函数
    • 计数

    • 平均
    • 最小值和最大值
  • SQL 中的数学函数
    • 绝对
    • 赛尔和地板
    • 截断

  • SQL 中的字符串函数
    • 下部和上部
    • Concat
    • 修剪
  • SQL 中的日期和时间函数
    • 日期和时间
    • 提取
    • 日期格式
  • SQL 中的 Windows 函数
    • 排名
    • 百分比值
    • 第 N 个值
  • 杂项功能
    • 转换
    • 斯图尔
    • 如果
介绍数据集
我将向您展示本文中介绍的所有函数的实际应用 , 使用虚拟数据集 。 假设全国有一家零售连锁店 。 以下 SQL 表记录了从零售商店购买物料、购买商品的日期、来自的城市以及采购金额 。

我们将使用此示例 , 本文将学习不同的函数 。
聚合函数
  • 计数
    最重要的聚合函数之一是count() 函数 。 它返回表中列的记录数 。 在我们的表中 , 我们可以使用count()函数来获取订单来自的城市数量 。 我们这样做如下:

    你会注意到这里有两件事 。 首先 , Null 函数计算 null 值 。 然后 , 重复值被多次计数 。 为了处理这个问题 , 我们可以把它与"不一"()函数配对 , 该函数将只计算列中不同的值 。


  • 每当我们处理与数字相关的列时 , 我们一定会检查它们的总和 。 例如 , 在我们的表中 , 总金额对于分析发生的销售非常重要 。
    可以使用对列名称起作用的sum()函数计算总和 。

    但是 , 如果我们想要计算每个城市的总金额呢?
    为此 , 我们可以将此功能与Groupby子句合并 , 按城市对输出进行分组 。 下面是如何实现它 。

    这向我们表明 , 该公司有 Indore 作为我们最高的创收城市 。
  • 平均
    过去做过一些数据分析的人都知道 , 平均值比计算数值之和更好 。
    在我们的示例中 , 我们有来自同一个城市的多个订单 , 因此 , 计算平均金额而不是总金额更为谨慎 。

  • 最小值和最大值
    最后 , 如果不计算最小值和最大值 , 聚合值分析就不完整 。 这些可以简单地计算使用最小() 和 max() 函数 。


数学函数
大多数时间 , 您必须处理 SQL 表中的数字以进行数据分析 。 要处理这些数字 , 您需要数学函数 。 这些定义可能微不足道 , 但当涉及到分析时 , 它们是使用最多的函数 。
  • 绝对
    abs()是最常见的数学函数 。 它计算作为参数传递的数值的绝对值 。
    要了解它在哪里有帮助 , 让我们首先找出每个记录的金额与表的平均金额的偏差 。

    现在 , 正如你所看到的 , 我们有一些负值在这里 。 这些可以很容易地转换为正数使用abs()功能 , 如下所示:

  • 赛尔和地板
    处理数值时 , 其中一些数值可能有十进制值 。 你怎么处理这些?您只需使用ceil()将其转换为下一个较高整数 , 或使用下一个较低的整数(使用楼层)即可 。
    在我们的表中 , "数量"列包含大量十进制值 。 我们可以使用 ceil() 或地板()函数将它们转换为整数 。

  • 截断
    有时 , 您不希望将十进制值转换为整数 , 但截断数字中的小数位数 。 截断() 函数实现它 。 您只要将十进制数字作为第一个参数传递 , 以及要截断它作为第二个参数的位数 。

    如您所见 , 我已经将值截断为小数点后一位 。

  • 模组函数是一个强大而重要的函数 。 当第二个数字除以第一个数字时 , Modulo 返回剩余的剩余数 。 它通过调用函数mod(x , y)来使用 , 其中当 x 除以 y 时 , 结果是剩余值 。
    它在分析中具有非常重要的功能 。 您可以使用它从 SQL 表中查找奇数或偶数记录 。 例如 , 在我们的示例表中 , 我可以使用 modulo 函数查找具有奇数数的记录 。

    或者 , 如果我使用 not 关键字否定上述结果 , 我甚至可以找到数量 。

字符串函数
使用 SQL 表时 , 必须一直处理字符串 。 当您想要以可呈现的方式输出结果时 , 它们尤其重要 。
  • 下部和上部
    可以通过分别使用上()或下()函数将字符串值转换为大写或小写 。 简而言之 , 这有助于为记录值带来更多的一致性 。

  • Concat
    concat() 函数将两个或多个字符串连接成一个字符串 。 您只要提供要连接的字符串作为参数 。

    正如您注意到的 , 即使其中一个值为 Null , 整个输出也会作为 Null 值返回 。
  • 修剪
    修剪是一个非常重要的功能 , 不仅在 SQL 中 , 而且在任何语言中 。 它是最重要的字符串函数之一 。 它删除字符串中的任何前导空格或尾随空格 。 例如 , 在我们的示例表中 , 姓氏列中有许多尾随和前导空格 。 我们可以使用修剪() 函数删除这些 。

  • 如您所看到的 , 函数已修剪字符串中的任何前导或尾随空格 。
日期和时间函数

首先 , 日期和时间特征的相关性是毋庸置疑的 。 但这只是这种情况 , 如果你知道如何处理他们好!查看以下日期和时间函数 , 掌握您的分析技能 。
  • 日期和时间
    如果您有一个日期和时间的通用列 , 正如我在示例表中具有的一样 , 则需要使用date() 和 time()函数来提取相应的值 。

  • 提取
    但有时 , 您可能希望更进一步 , 分析在一周或一个月的特定时间 , 或者一天中的特定时间下单的多少 。 为此 , 您需要使用超级方便的提取()函数 。
    语法很简单:提取(单位自日期)
    单位可以是从年、月到一分钟或一秒的任何内容 。

    您甚至可以提取一年中一周或一年季度的星期 。

    从日期中提取的所有单位的完整列表如下:

    如您所看到的 , 可以使用提取()函数进行大量分析!
  • 日期格式
    有时 , 与查看日期的方式相比 , 数据库中的日期会以不同的格式保存 。 因此 , 若要更改日期格式 , 可以使用date_format)函数 。 语法如下:date_format(日期、格式)
    目前 , 示例表中保存的日期采用年月日格式 。 使用此函数 , 我将以日月名称年格式输出日期 。

    有很多机会根据你的要求来改变格式 。 你可以在这个链接找到所有的 。
视窗功能
窗口函数是重要的功能 , 但可能难以理解 。 因此 , 我们首先从了解基本窗口函数开始 。
窗口功能
窗口函数执行类似于聚合函数的计算 , 但稍有扭曲 。 当常规聚合函数将行分组到单个输出值中时 , 窗口函数不会这样做 。 窗口函数适用于行的子集 , 但不会减少行数 。 行保留其个人标识 。 为了更好地理解它 , 让我们比较一个简单的聚合函数和() 。

在这里 , 我们获取所有行的聚合值 。 现在 , 让我们使用此聚合函数的 windows 函数 , 看看会发生什么 。

正如您必须注意到的 , 我们仍然得到总和值 , 但它们由不同的城市群隔离 。 请注意 , 我们计算每一行的输出 。
OVER 子句将简单聚合函数转换为窗口函数 。 语法很简单 , 如下所示:
window_function_name (<表达式>) 结束 ( <partition_clause > < order_clause>)
OVER 子句前的部分是聚合函数或窗口函数 。 我们将在后续部分中介绍一些窗口函数 。
OVER 子句之后的部分可分为两部分:
  • Partition_clause定义行之间的分区 。 窗口函数在每个分区内运行 。 分区按子句定义它 。
  • Order_clause对分区中的行进行顺序 。 按子句的顺序定义它 。
我们将在后续部分中详细探讨这些窗口函数 。
  • 排名
简单的窗口函数是排名() 函数 。 如名称显示的那样 , 它根据条件对分区组中的行进行排名 。
它有以下语法:排名() 结束 (按 <表达式> 按 <表达式>)
让我们使用这个函数根据每个城市内的顺序量对表中的行进行排名 。

因此 , 行已在其各自的分区组(或城市)中排名 。
  • Percent_value
它是查找组中行的相对排名的重要窗口函数 。 它确定每行的百分位值 。
其语法如下:Percent_rank() over(按 <表达式> 按 <表达式>)
尽管分区子句是可选的 。
让我们使用此函数来确定表中每个客户的百分位数 。

  • Nth_value
有时 , 您希望找出哪个行具有最高、最低或第 n 个最高值 。 例如 , 学校中得分最高、销售表现最佳的人等是在这种情况下 , 您需要nth_value()窗口功能 。
因此 , 函数从一组有序的行返回第 n 行值 。 语法如下:
nth_value() 顺序(按 <表达式> 按 <表达式>) 的顺序;)
让我们使用这个函数来找出谁是表中的顶级买家 。

杂项功能
到目前为止 , 我们已经讨论了非常具体的功能 。 现在 , 我们将探讨一些无法在特定功能组中分类但具有巨大价值的杂项函数 。
  • 转换
    有时 , 您需要将输出值转换为指定的数据类型 。 此外 , 您可以把它像强制转换一样 , 在那里您可以更改值的数据类型 。 其语法很简单:转换(值、类型)
    在打印值之前 , 我们可以使用它转换日期列的数据类型 。

  • 斯图尔
    通常 , 如果不为属性指定非值 , 则最终可能会在列中出现一些 null 值 。 但是 , 您可以轻松地使用"51"函数来处理它们 。
    您只需在函数中写入表达式 。 否则 , 它将返回 null 和 0 的 1 。

    看起来表中有一些姓氏属性的null 值!
  • 如果
    最后 , 在 SQL 中使用最重要的函数是if() 函数 。 它允许您定义在任何编程语言中遇到的 if 条件 。
    它有一个简单的语法:if(表达式 , value_if_true , value_if_false)
    使用此功能 , 让我们找出哪个客户支付了超过 1000 金额的订单 。

    此外 , 此功能的使用是无限的 , 它正确地定期用于数据分析任务 。
    文章出处:
    【小米科技|用于数据分析任务的常用 SQL 函数】作者:


    推荐阅读