【发布时间】:2015-08-08 02:32:31
【问题描述】:
我有这个从表中选择行的代码,但我需要让他返回所有行的总和或所有行的平均值。我试图将代码放在 sum(select) 中的 select 之类的其他选择中,但是它不起作用,有什么想法可以使它起作用吗?抱歉信息不多。现在它打印 25 行。我需要让它返回 1 行,就像 sum(ontime) 和 avg(actual)。我的意思是将所有 25 行的 ontime 列和 avg actual 列相加。
SELECT AVG(CASE WHEN a.ontime = 'on time' THEN 100 ELSE 0 END)*COUNT(a.country) AS ontime
,AVG(CASE WHEN a.accuracy = 'accurate' THEN 100 ELSE 0 END) AS actual
,COUNT(a.country) AS task_count
FROM
bstplanning.dbo.sc_data a
INNER JOIN bstplanning.dbo.users
ON a.user_id = bstplanning.dbo.users.user_id
WHERE
a.date >= '2015-04-01 00:00:00.000' AND a.date <= '2015-04-30 00:00:00.000' AND a.actual > 0 AND
((a.ontime='on time' OR a.ontime = 'late') OR (a.accuracy='accurate' OR a.accuracy = 'error'))
and bstplanning.dbo.users.split='Rep'
and bstplanning.dbo.users.user_surname='user'
GROUP BY
a.country
,a.client
,a.task_group
,frequency
,a.track
【问题讨论】:
-
its not working还不够。给我们详细信息。 -
使用示例数据和所需结果编辑您的问题。我还注意到代码是 SQL Server 代码,所以我删除了 MySQL 标记。
-
已编辑。是不是更清楚了?
标签: sql-server select sum average