我有返回总秒作为28943的查询,我使用下面的查询来转换秒
CREATE TABLE dbo.MyTable
(
userID int,
uDateTime datetime,
totalsec bigint
)
INSERT INTO dbo.MyTable VALUES (123, getdate(),1503);
INSERT INTO dbo.MyTable VALUES (123, getdate(),893);
INSERT INTO dbo.MyTable VALUES (123, getdate(),14524);
INSERT INTO dbo.MyTable VALUES (123, getdate(),6631);
INSERT INTO dbo.MyTable VALUES (123, getdate(),13);
INSERT INTO dbo.MyTable VALUES (123, getdate(),889);
INSERT INTO dbo.MyTable VALUES (123, getdate(),4490);
GO
SELECT userid,Format( SUM(CAST((CAST(totalsec as float) / 3600)as decimal(10,1))) ,'N1')
FROM dbo.MyTable
group by userid,cast(udatetime as date)
产出: 1,'07/07/2021',7.8
当我在查询下面运行时
SELECT
FORMAT(SUM(CAST((CAST(28943 AS float) / 3600) AS decimal(10, 1))), 'N1')
产出: 8.0
我想知道为什么产出会有这样的差异?
发布于 2021-07-07 21:19:57
第一个查询从一个表中获取其数据,如果用十进制(10,1),则对所切割的值进行汇总。
在secound查询中,您已经插入了和。如果没有一个表作为源,sum函数不会做任何事情。
因此,您有不同的结果,因为您使用不同的值进行计算。
发布于 2021-07-08 04:42:51
我知道了为什么我会得到7.8分。下面的查询解决了从dbo.MyTable组中按userid、dbo.MyTable(udatetime作为日期)从dbo.MyTable组中选择用户as、格式(cast(SUM(以浮点数计)/3600)作为十进制(10,1))、从dbo.MyTable组中选择“userid”(Udatetime)的问题。
https://stackoverflow.com/questions/68294103
复制相似问题