Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 求和后在SQL查询中查找平均值-组函数使用无效_Mysql_Sql_Sum_Average - Fatal编程技术网

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这里有另一种方法;)检查
解释计划