SQL 是数据和数据科学的重要组成部分,用于存储和检索数据。随着各行各业每天收集和产生大量数据,只要数据保留在符合 SQL 的数据库中,SQL 仍然是帮助调查、过滤和聚合数据以全面了解数据的最有效工具。
我多次看到 SQL 是数据科学中被低估的技能,因为它被认为是从数据库中获取数据的必要而不酷的方式。人们认为 SQL 只是 SELECT、JOIN 和 ORDER BY。但是,它不仅仅是 SELECT、JOIN 和 ORDER By 语句。
该函数用于处理空值。它用另一个所需的值替换空值。
让我们以一个雇员表为例:
图 1:具有空值的城市
在上表中,城市行有许多空值。让我们用默认值查询城市的空值。
SELECT name, salary, city,
COALESCE(city, 'New Delhi') AS city_null_value
FROM
Employee
ORDER BY name;
图 2:具有空值的城市的默认值
该函数为结果的每一行创建一个唯一的递增整数值。这一列值被认为是伪列,因为它并不自然地存在于我们的数据表中。因此,结果按照分析师在ORDER BY
子句中确定的顺序返回。
让我们在雇员表中创建一个 rownumber。
SELECT
rownumber,
name,
salary,
city
FROM
(
SELECT
ROW_NUMBER() OVER (PARTITION BY city ORDER BY name DESC) AS rownumber,
tab.*
FROM Employee tab
) dat
ORDER BY name, rownumber;
图 3:基于分区城市的行号
它用于定义“语句作用域视图”。这些不存储在数据库模式中。它也被称为公用表表达式(CTE)和子查询分解。
让我们以订单明细表为例,如下所示:
图 4:订单明细表
现在,查询返回每个 ProductId 的平均订购数量。
WITH cte_quantity
AS
(SELECT
SUM(Quantity) as Total
FROM OrderDetails
GROUP BY ProductID)
SELECT
AVG(Total) average_product_quantity
FROM cte_quantity;
输出:
图 5:每个产品 Id 的平均订购数量
它用于将多行数据连接到一个字段中。它从一个组中返回一个带有串联的非空值的字符串。当没有非空值时,它返回 NULL。
让我们以下面的“图书管理员”表为例:
图 6:图书主表
查询以返回每组' pub_id '的逗号(,)分隔的' cate_id '列表。
SELECT pub_id,GROUP_CONCAT(cate_id)
FROM book_mast
GROUP BY pub_id;
图 7:逗号分隔的值
Panda 是一个很棒的库,它给出了一行代码来从 SQL 查询。下面的代码用于从 Pandas 查询:
query **=** "SELECT * FROM CURRENT_TABLE"
sql_data **=** pandas.read_sql(query, **connection**)
数据科学家或分析师应该了解 SQL。事实上,所有处理数据和分析的专业人员都应该了解 SQL。SQL 仍然是最强大的工具,可以帮助您调查、过滤和汇总数据,从而彻底了解您的数据。