[英]How to group by 1 element and get sum of other?
我有一张桌子,像这样: 现在,我正在尝试获取所有
called
var的列和持续时间的总和。 现在我正在尝试:
select called,SUM(duration) as dursum,time,CONVERT(VARCHAR(8), time, 4) AS Batch
from Calls
where caller='somevalue'
group by called,time
order by called
现在的问题是,我想是因为我也按time
排序,所以我并没有真正获得不同的值,我多次获得相同的数字,并且总和的作用相同,只对部分行求和。
我无法group by time
删除group by time
因为使用SUM
函数会导致错误。
再次,我希望结果每天有一个被叫号码,并且硬核包含所有持续时间总和, 并以某种方式按批处理列进行分组...
我该如何解决?
您是对的,没有按时间分组会为您带来正确的结果集。 但是,发生的错误很容易解释:这是由于在select子句中选择了“ time,CONVERT(VARCHAR(8),time,4)AS Batch”导致的,因此您只需要对时间字段(例如MAX(time),CONVERT(VARCHAR(8),MAX(time),4)AS批处理。
最好的祝福
好吧,这就是我最终解决它的方式:
select called,SUM(duration) as dursum, dateadd(DAY,0, datediff(day,0, time))as Batch2 ,CONVERT(VARCHAR(8), time, 4) AS Batch
from Calls
where caller='0502081971'
group by called, dateadd(DAY,0, datediff(day,0, time)),CONVERT(VARCHAR(8), time, 4)
order by called
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.