📜  生成月明智报告的 SQL 查询(1)

📅  最后修改于: 2023-12-03 15:11:13.944000             🧑  作者: Mango

生成月明智报告的 SQL 查询

简介

本文将介绍如何使用 SQL 查询生成月度明智报告。明智报告是一种以图表和数据表格的形式呈现的报告,用于显示具体的业务指标和业务表现。

数据库结构

在生成明智报告之前,我们需要有一个包含业务数据的数据库。在本例中,我们将使用以下结构:

CREATE TABLE `transactions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `quantity` int(11) NOT NULL,
  `price` decimal(10,2) NOT NULL,
  `date` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

该表格用于存储每个交易的详细信息。包括交易 ID,客户 ID,商品 ID,数量,价格和交易时间。

查询
总交易额

要生成月度报告,我们需要从数据库中获取一些数据。首先,我们需要计算每个月的总交易额。以下 SQL 语句将返回每个月的总交易额:

SELECT DATE_FORMAT(date, '%Y-%m') AS month, SUM(price*quantity) AS total_sales
FROM transactions
GROUP BY month;

该查询将对 transactions 表进行汇总,按照月份计算总销售额。我们使用了 DATE_FORMAT 函数将日期格式化为“年-月”的形式。SUM 函数将每个月的交易数量乘以价格之后求和。

订单数量

接下来,我们需要计算每个月的订单数量。以下 SQL 语句将返回每个月的订单数量:

SELECT DATE_FORMAT(date, '%Y-%m') AS month, COUNT(*) AS total_orders
FROM transactions
GROUP BY month;

该查询将对 transactions 表进行汇总,计算出每个月的订单数量。我们使用了 DATE_FORMAT 函数将日期格式化为“年-月”的形式。COUNT 函数将每个月中交易的数量计算出来。

库存状况

最后,我们需要计算每个月的库存状况。这将让我们了解每个月有多少库存进出。以下 SQL 语句将返回每个月的库存状况:

SELECT
    DATE_FORMAT(date, '%Y-%m') AS month,
    (SELECT SUM(quantity) FROM transactions WHERE date LIKE CONCAT(month, '%')) AS total_in,
    (SELECT SUM(quantity) FROM transactions WHERE date LIKE CONCAT(month, '%')) -
    (SELECT SUM(quantity) FROM transactions WHERE date<CONCAT(month, '-01')) AS total_out
FROM transactions
GROUP BY month;

该查询将计算每个月的进出货总数。对于每个月份,我们将也将显示进货总数和出货总数。我们使用了类似子查询的方法来计算这些数字。第一个子查询将返回当前月的进货总数,第二个子查询将返回当前月出货之前的总库存。

Markdown 输出

我们可以将以上 SQL 查询输出到 Markdown 文件中,使得其易于阅读。以下是一个示例:

总交易额
SELECT DATE_FORMAT(date, '%Y-%m') AS month, SUM(price*quantity) AS total_sales
FROM transactions
GROUP BY month;

| month | total_sales | |-------|-------------| | 2022-01 | 100000.00 | | 2022-02 | 150000.00 | | 2022-03 | 80000.00 |

订单数量
SELECT DATE_FORMAT(date, '%Y-%m') AS month, COUNT(*) AS total_orders
FROM transactions
GROUP BY month;

| month | total_orders | |-------|--------------| | 2022-01 | 50 | | 2022-02 | 70 | | 2022-03 | 30 |

库存状况
SELECT
    DATE_FORMAT(date, '%Y-%m') AS month,
    (SELECT SUM(quantity) FROM transactions WHERE date LIKE CONCAT(month, '%')) AS total_in,
    (SELECT SUM(quantity) FROM transactions WHERE date LIKE CONCAT(month, '%')) -
    (SELECT SUM(quantity) FROM transactions WHERE date<CONCAT(month, '-01')) AS total_out
FROM transactions
GROUP BY month;

| month | total_in | total_out | |-------|----------|-----------| | 2022-01 | 1000 | 400 | | 2022-02 | 1500 | 500 | | 2022-03 | 800 | 400 |

以上 Markdown 文件将生成一个易于阅读的明智报告,包括每个月的总交易额、订单数量和库存状况。