mysql 先有一张 gx_cyxqtb_day日发电量表 rq为日期 drzfdl为日发电量 年所需发电总量为1000 请编写sql统计 当前年每月完成总进度百分比、
时间: 2024-03-06 10:49:57 浏览: 28
好的,这是您的问题:
```mysql
SELECT
MONTH(`rq`) AS `month`,
SUM(`drzfdl`) AS `month_production`,
SUM(`drzfdl`) / 1000 * 100 AS `completion_rate`
FROM
`gx_cyxqtb_day`
WHERE
YEAR(`rq`) = YEAR(CURDATE())
GROUP BY
`month`
```
这条 SQL 语句会查询当前年份的每个月的发电量,并计算出当前月份的完成进度百分比。其中,`MONTH()` 函数用于提取日期的月份部分,`SUM()` 函数用于求和月份内的发电量,`YEAR()` 函数用于提取日期的年份部分,`CURDATE()` 函数用于获取当前日期。最后,`GROUP BY` 子句用于按月份分组,得出每个月份的发电量和完成进度百分比。
相关问题
mysql 先有一张 gx_cyxqtb_day日发电量表 rq为日期 drzfdl为日发电量 年所需发电总量为1000 请编写sql统计 每月增长式的进度百分比
好的,这是您的问题:
```mysql
SELECT
`t1`.`month`,
`t1`.`month_production`,
SUM(`t2`.`month_production`) AS `cumulative_production`,
SUM(`t2`.`month_production`) / 1000 * 100 AS `cumulative_completion_rate`
FROM
(
SELECT
MONTH(`rq`) AS `month`,
SUM(`drzfdl`) AS `month_production`
FROM
`gx_cyxqtb_day`
WHERE
YEAR(`rq`) = YEAR(CURDATE())
GROUP BY
`month`
) AS `t1`
JOIN (
SELECT
MONTH(`rq`) AS `month`,
SUM(`drzfdl`) AS `month_production`
FROM
`gx_cyxqtb_day`
WHERE
YEAR(`rq`) = YEAR(CURDATE()) AND
MONTH(`rq`) < MONTH(CURDATE())
GROUP BY
`month`
) AS `t2` ON `t1`.`month` > `t2`.`month`
GROUP BY
`t1`.`month`
```
这条 SQL 语句会查询当前年份的每个月的发电量,并按照每个月的顺序,依次计算月份累计完成进度百分比。其中,第一个子查询用于查询每个月的发电量,第二个子查询用于查询当前月份之前的月份的发电量。最后,使用 JOIN 子句将这两个子查询连接起来,计算出每个月份的月度发电量、月度累计发电量、月度累计完成进度百分比。
mysql 先有一张 gx_cyxqtb_day日发电量表 rq为日期 drzfdl为日发电量 年所需发电总量为100 请编写sql统计 当前年每月完成的累计进度百分比 和累计总量
好的,针对您的问题,我可以给出以下 SQL 语句:
```sql
SELECT
DATE_FORMAT(rq, '%Y-%m') AS month,
ROUND(SUM(drzfdl) / 100 * 100, 2) AS cumulative_progress_percentage,
ROUND(SUM(SUM(drzfdl)) OVER (ORDER BY DATE_FORMAT(rq, '%Y-%m')), 2) AS cumulative_amount
FROM
gx_cyxqtb_day
WHERE
YEAR(rq) = YEAR(CURDATE())
GROUP BY
DATE_FORMAT(rq, '%Y-%m')
```
该语句会统计当前年份中每个月的累计完成进度百分比和累计总量,其中 `gx_cyxqtb_day` 表为日发电量表,包含日期 `rq` 和日发电量 `drzfdl` 两个字段。年所需发电总量为100。
解释一下上述 SQL 语句中的各个部分:
- `DATE_FORMAT(rq, '%Y-%m') AS month`:将日期 `rq` 格式化为年月格式,以便按月分组统计。
- `ROUND(SUM(drzfdl) / 100 * 100, 2) AS cumulative_progress_percentage`:计算当前月的累计完成进度百分比,公式为当前月累计发电量除以年所需发电总量,再乘以100。使用 `ROUND` 函数将结果保留两位小数。
- `ROUND(SUM(SUM(drzfdl)) OVER (ORDER BY DATE_FORMAT(rq, '%Y-%m')), 2) AS cumulative_amount`:计算当前月的累计发电量,并使用窗口函数 `SUM() OVER (ORDER BY DATE_FORMAT(rq, '%Y-%m'))` 按月份顺序累计求和。使用 `ROUND` 函数将结果保留两位小数。
- `WHERE YEAR(rq) = YEAR(CURDATE())`:筛选出当前年份的数据。
- `GROUP BY DATE_FORMAT(rq, '%Y-%m')`:按照年月分组统计。
希望以上 SQL 语句对您有所帮助!
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)