Mysql 求和后在SQL查询中查找平均值-组函数使用无效
我有一些对我来说很有用的问题:Mysql 求和后在SQL查询中查找平均值-组函数使用无效,mysql,sql,sum,average,Mysql,Sql,Sum,Average,我有一些对我来说很有用的问题: Select Name,sum(number_hours)/8)*100 from T1 where name='PERSON_A' group by name,booked_date 姓名始终是我在where子句中输入的同一个人。结果将是: PERSON_A 100 PERSON_A 140 PERSON_A 120 这是计算每个预定日期工人的一些每日利用率。 现在我想计算平均每日利用率((120+120+100)/3=120) 但是当我把 Sel
Select Name,sum(number_hours)/8)*100
from
T1
where name='PERSON_A'
group by name,booked_date
姓名始终是我在where子句中输入的同一个人。结果将是:
PERSON_A 100
PERSON_A 140
PERSON_A 120
这是计算每个预定日期工人的一些每日利用率。
现在我想计算平均每日利用率((120+120+100)/3=120)
但是当我把
Select Name,AVG(sum(number_hours)/8)*100)
FROM
T1
WHERE name='PERSON_A'
group by name,booked_date
我在无效使用组函数时出错。为什么?如何计算每日利用率总和后的平均值。
谢谢尝试使用子查询求和,并在外部查询中计算平均值,如:
SELECT Name, AVG (hsum)
FROM
(
SELECT Name,sum((number_hours)/8)*100 AS hsum
FROM
T1
WHERE name='PERSON_A'
GROUP BY name,booked_date
) t
尝试使用子查询求和,并在外部查询中计算平均值,如:
SELECT Name, AVG (hsum)
FROM
(
SELECT Name,sum((number_hours)/8)*100 AS hsum
FROM
T1
WHERE name='PERSON_A'
GROUP BY name,booked_date
) t
我知道你已经接受了答案。但是也尝试一下:)不
子查询
。也很快。我添加了额外的countofworkdates
列供您查看日期
*
样本数据表:
ID NAME HOURS WORKDATE
100 j 20 December, 03 2012 00:00:00+0000
200 k 10 December, 03 2012 00:00:00+0000
100 j 10 December, 04 2012 00:00:00+0000
300 l 20 December, 04 2012 00:00:00+0000
100 j 5 December, 05 2012 00:00:00+0000
300 l 15 December, 03 2012 00:00:00+0000
100 j 10 December, 04 2012 00:00:00+0000
400 m 20 December, 03 2012 00:00:00+0000
查询:
SELECT Name, ((sum(hours)/8)*100) AS sum
,count(distinct workdate) workdates, ((sum(hours)/8)*100)/count(
distinct workdate) as avg
FROM
works
WHERE name='j'
GROUP BY name
;
结果:
NAME SUM WORKDATES AVG
j 562.5 3 187.5
我知道你已经接受了答案。但是也尝试一下:)不
子查询
。也很快。我添加了额外的countofworkdates
列供您查看日期
*
样本数据表:
ID NAME HOURS WORKDATE
100 j 20 December, 03 2012 00:00:00+0000
200 k 10 December, 03 2012 00:00:00+0000
100 j 10 December, 04 2012 00:00:00+0000
300 l 20 December, 04 2012 00:00:00+0000
100 j 5 December, 05 2012 00:00:00+0000
300 l 15 December, 03 2012 00:00:00+0000
100 j 10 December, 04 2012 00:00:00+0000
400 m 20 December, 03 2012 00:00:00+0000
查询:
SELECT Name, ((sum(hours)/8)*100) AS sum
,count(distinct workdate) workdates, ((sum(hours)/8)*100)/count(
distinct workdate) as avg
FROM
works
WHERE name='j'
GROUP BY name
;
结果:
NAME SUM WORKDATES AVG
j 562.5 3 187.5
@EDERFF将有两个语法错误。您需要为内部表指定表别名。和
总和(小时数)/8)
缺少括号。不多,但还是;)@EDERFF将有两个语法错误。您需要为内部表指定表别名。和总和(小时数)/8)
缺少括号。不多,但还是;)@stefke这里有另一种方法;)检查Explain Plan
。@stefke这里有另一种方法;)检查解释计划
。