Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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查询时需要帮助_Mysql - Fatal编程技术网

在构建MYSQL查询时需要帮助

在构建MYSQL查询时需要帮助,mysql,Mysql,我有两张桌子a和b。表a有id列表,如1、2、3、4、5等,表b有分数,如 1,20 1,30 1,40 3,10 (20 30 40 10是分数,1和3是表a中的id)我想计算分数的平均值。我需要的结果应该是这样的: average| id ----------- 20.45 | 1 30.15 | 2 60.45 | 3 目前还没有计算平均数,这只是一个例子 这是我现在使用的查询,但它只给我一个结果 查询: select avg(score),id from b wh

我有两张桌子a和b。表a有id列表,如1、2、3、4、5等,表b有分数,如

1,20 
1,30 
1,40 
3,10 
(20 30 40 10是分数,1和3是表a中的id)我想计算分数的平均值。我需要的结果应该是这样的:

average| id
-----------
20.45  |  1
30.15  |  2
60.45  |  3
目前还没有计算平均数,这只是一个例子

这是我现在使用的查询,但它只给我一个结果

查询:

select avg(score),id from b where id in (select id from a);

请帮助我建立查询。

尝试添加
按id分组

select avg(score),id from b group by id;

我已经明确添加了您的“A”表,以防有其他元素,例如您想从中获取信息的人名

select
      a.id,
      avg( b.score )
   from
      YourTableA a
         join YourTableB b
            on a.id = b.id
   group by
      a.id
差不多

   select avg(score), a.id from a join b on a.id = b.id group by a.id;
一些有用的链接:


  • 这就是我在T-SQL中的实现方式。。。不是100%的人认为这在MySQL中可以工作,但我认为它会

    SELECT SUM(Score)/COUNT(Score) As 'Average', ID
    FROM b
    GROUP BY ID
    
    然而,要以十进制形式返回答案,您可能需要将数据类型从int转换为long。这就是我在SQL T-server中的工作方式。。。这可能需要进行一些更改才能使用MySQL,但这给了您一个想法:

    SELECT CAST(CAST(SUM(Score) AS Decimal)/CAST(COUNT(Score) As Decimal)As Decimal(10,2)) As Average, ID
    FROM b
    GROUP BY ID
    
    希望这有帮助。我没有使用AVG(),因为它给了我整数结果