回城传送–》《100天精通MYSQL从入门到就业》
文章目录
- 零、前言
- 一、练习题目
- 二、SQL思路
- 初始化数据
- 什么是透视表
- 实战体验
- 三、总结
- 四、参考
零、前言
今天是学习 SQL 打卡的第 35 天。
我的学习策略很简单,题海策略+ 费曼学习法。如果能把这些题都认认真真自己实现一遍,那意味着 SQL 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。
今天的学习内容是:SQL高级技巧-透视表
一、练习题目
题目链接 | 难度 |
---|---|
透视表 | ★★★☆☆ |
二、SQL思路
初始化数据
创建销售记录表sales_records
CREATE TABLE sales_records (
id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL,
sale_date DATE NOT NULL,
amount DECIMAL(10, 2) NOT NULL
);
这个表包含销售记录的ID、产品名称、销售日期和销售金额。
接下来,我们插入一些测试数据:
INSERT INTO sales_records (product_name, sale_date, amount) VALUES
('产品A', '2023-01-01', 100.00),
('产品B', '2023-01-01', 150.00),
('产品A', '2023-01-02', 200.00),
('产品C', '2023-01-02', 120.00),
('产品B', '2023-01-03', 180.00),
('产品A', '2023-01-03', 250.00);
这些数据表示了三种产品在不同日期的销售金额。
什么是透视表
MySQL的透视表实际上是一种通过SQL查询模拟出来的数据展示形式。它允许我们将原始数据按照不同的维度进行聚合和重排,从而以更清晰、直观的方式展示数据。
实战体验
例子:创建一个透视表,展示每种产品在每天的销售金额。
SELECT
PRODUCT_NAME,
SUM(CASE WHEN SALE_DATE = '2023-01-01' THEN AMOUNT ELSE 0 END) AS '2023-01-01',
SUM(CASE WHEN SALE_DATE = '2023-01-02' THEN AMOUNT ELSE 0 END) AS '2023-01-02',
SUM(CASE WHEN SALE_DATE = '2023-01-03' THEN AMOUNT ELSE 0 END) AS '2023-01-03'
FROM
SALES_RECORDS
GROUP BY
PRODUCT_NAME;
这个查询使用了CASE语句和SUM()聚合函数来按照产品名称和日期对销售金额进行汇总。GROUP BY子句则确保结果按照产品名称进行分组。
执行上述查询后,你将得到一个透视表形式的结果,其中每一行代表一个产品,每一列代表一个特定日期的销售金额。
三、总结
虽然MySQL没有内置的透视表功能,但我们可以通过编写复杂的SQL查询来模拟实现透视表的效果。这种方法在处理简单透视需求时非常有效,但对于更复杂的场景,可能需要更高级的查询技术或考虑使用其他数据处理工具。
在实际应用中,透视表常用于数据分析和报告生成,它能够帮助我们更好地理解和展示数据的内在关系。通过结合MySQL的查询功能和透视表的思想,我们可以更加灵活地处理和呈现数据。
所以,嗯,这题的答案选。。评论区大声告诉虚竹哥。
四、参考
MySQL进阶技能树–》SQL高级技巧–》透视表
我是虚竹哥,我们明天见~