SQL Server 查询数据 并添加最大值,最小值,平均值,求和

我对一天的数据进行查询(一小时记录一次,一天有24条数据),想在返回列的最后一条数据后面添加一列字符串显示最大值,最小值,平均值以及求和应该怎么做呀?

效果类似图片这样的

img

img

参考GPT和自己的思路,你可以使用UNION ALL将查询结果合并到一起,然后在最后一行添加聚合函数来计算最大值、最小值、平均值和求和,并添加标签列来说明这些值的含义。

以下是一个示例查询,假设有一个名为daily_data的表,其中包含datetime和value两列:

SELECT CONVERT(varchar(10), datetime, 120) AS Date,
       CONVERT(varchar(2), datetime, 108) AS Hour,
       value
FROM daily_data
WHERE datetime >= '2022-02-01' AND datetime < '2022-02-02'
UNION ALL
SELECT 'Total', '', MAX(value)
FROM daily_data
WHERE datetime >= '2022-02-01' AND datetime < '2022-02-02'
UNION ALL
SELECT 'Total', '', MIN(value)
FROM daily_data
WHERE datetime >= '2022-02-01' AND datetime < '2022-02-02'
UNION ALL
SELECT 'Total', '', AVG(value)
FROM daily_data
WHERE datetime >= '2022-02-01' AND datetime < '2022-02-02'
UNION ALL
SELECT 'Total', '', SUM(value)
FROM daily_data
WHERE datetime >= '2022-02-01' AND datetime < '2022-02-02'

这将返回类似以下的结果:

Date       Hour   value
---------- -- -----
2022-02-01 00  12.4
2022-02-01 01  11.9
2022-02-01 02  12.2
2022-02-01 03  12.6
2022-02-01 04  12.3
2022-02-01 05  11.7
2022-02-01 06  11.8
2022-02-01 07  12.1
2022-02-01 08  11.9
2022-02-01 09  12.4
2022-02-01 10  12.2
2022-02-01 11  12.1
2022-02-01 12  11.9
2022-02-01 13  12.3
2022-02-01 14  11.8
2022-02-01 15  12.2
2022-02-01 16  12.1
2022-02-01 17  12.3
2022-02-01 18  12.0
2022-02-01 19  12.1
2022-02-01 20  12.2
2022-02-01 21  12.4
2022-02-01 22  12.0
2022-02-01 23  11.9
Total                12.6
Total                11.7
Total                12.06
Total                289.5

这是个示例,你把你的数据带入应该是你要的的效果。

为啥要一个sql搞定?
service层用两个sql,一个用来查列表,一个用来做统计
然后拼接成一个DTO返回不就行了。