SQL 同一行不同列的数据统计

SQL 同一行不同列的数据统计

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语句实现同一行不同列的数据统计。我们可以通过求和、计算平均值、比较不同列的值等方法,对同一行不同列的数据进行统计和分析。这些方法可以帮助我们更好地理解数据,并为决策提供参考依据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程