平均行中的列值

时间:2013-11-18 06:18:06

标签: java mysql birt

我正在尝试在BIRT中查询图表。我有一个类似于以下的表:

id   score_1   score_2   score_3
1     80.5       81.2      81.3
2     90.1       88.9      87.1
3     85.6       87.5      84.8

我需要做的是获取每个得分列的平均值并将其输出为如下行:

   score    average
     1       85.4
     2       85.87
     3       84.4

在UNION中尝试了一段时间并缺少一系列查询,是否有更有效的方法来解决这个问题?请注意,该表还连接到用于过滤的其他表。

2 个答案:

答案 0 :(得分:0)

知道了。你想要在行中的输出。截至目前,TRANSPOSE似乎没有现成的MySQL功能。我能想到的最好的就是这个,我相信你已经尝试过了。

SELECT score_id, score_avg 
FROM (
  SELECT '1' as score_id, avg(score_1) as score_avg FROM scores
  UNION
  SELECT '2' as score_id, avg(score_2) as score_avg FROM scores
  UNION
  SELECT '3' as score_id, avg(score_3) as score_avg FROM scores
  ) as transpose_table;

SQL Fiddle Link

答案 1 :(得分:-1)

SELECT (score_1 + score_2 + score_3)/3 as AVERAGE
FROM scores;

您可以使用union

SELECT AVG(score_1)FROM scores
UNION
select AVG(score_2) FROM scores
UNION
select AVG(score_3) FROM scores