SQL 同一行不同列的数据统计
在数据库中,有时候需要统计同一行不同列的数据,比如多个商品的销量、价格等不同属性。这时候我们可以使用SQL语句进行统计并返回需要的结果。在本文中,我们将介绍如何使用SQL语句实现同一行不同列的数据统计。
准备数据
首先,我们需要准备一些示例数据用于演示。假设我们有一个名为products
的表,包含了商品的信息,如商品ID、名称、销量、价格等字段。我们可以使用以下SQL语句创建这个表并插入一些示例数据:
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(50),
sales_2020 INT,
sales_2021 INT,
price DECIMAL(10, 2)
);
INSERT INTO products (product_id, product_name, sales_2020, sales_2021, price)
VALUES
(1, 'Product A', 100, 120, 50.00),
(2, 'Product B', 200, 180, 70.00),
(3, 'Product C', 150, 130, 60.00),
(4, 'Product D', 180, 200, 80.00),
(5, 'Product E', 120, 140, 55.00);
现在,我们已经有了一个包含了商品信息的products
表,接下来我们将介绍如何使用SQL语句进行同一行不同列的数据统计。
统计同一行不同列的数据
求和
如果我们想要统计每个商品的总销量,我们可以使用以下SQL语句:
SELECT
product_id,
product_name,
sales_2020 + sales_2021 AS total_sales
FROM products;
运行以上SQL语句,我们可以得到每个商品的总销量,结果如下所示:
product_id | product_name | total_sales |
---|---|---|
1 | Product A | 220 |
2 | Product B | 380 |
3 | Product C | 280 |
4 | Product D | 380 |
5 | Product E | 260 |
计算平均值
如果我们想要统计每个商品的平均销量,我们可以使用以下SQL语句:
SELECT
product_id,
product_name,
(sales_2020 + sales_2021) / 2 AS avg_sales
FROM products;
运行以上SQL语句,我们可以得到每个商品的平均销量,结果如下所示:
product_id | product_name | avg_sales |
---|---|---|
1 | Product A | 110 |
2 | Product B | 190 |
3 | Product C | 140 |
4 | Product D | 190 |
5 | Product E | 130 |
比较不同列的值
如果我们想要比较每个商品在2020年和2021年的销量情况,我们可以使用以下SQL语句:
SELECT
product_id,
product_name,
CASE
WHEN sales_2020 > sales_2021 THEN '2020 more'
WHEN sales_2020 < sales_2021 THEN '2021 more'
ELSE 'equal'
END AS sales_comparison
FROM products;
运行以上SQL语句,我们可以得到每个商品在不同年份销量的比较情况,结果如下所示:
product_id | product_name | sales_comparison |
---|---|---|
1 | Product A | 2021 more |
2 | Product B | 2020 more |
3 | Product C | 2021 more |
4 | Product D | 2021 more |
5 | Product E | 2021 more |
总结
通过以上示例,我们学习了如何使用SQL语句实现同一行不同列的数据统计。我们可以通过求和、计算平均值、比较不同列的值等方法,对同一行不同列的数据进行统计和分析。这些方法可以帮助我们更好地理解数据,并为决策提供参考依据。