根据所选列的名称对所选列执行操作

时间:2015-04-06 10:37:06

标签: mysql sql average criteria

我有一个巨大的表,包含三个“选择”列和许多“数据”列。

  ID   Thing1   Thing2   Thing3   avgData1   avgData2   highestEtc  
 ---- -------- -------- -------- ---------- ---------- ------------ 
   1        1        2        2        321        654          999  
   2        2        1        1        123        456           11  
   3        2        1        1        987        789           77  
   4        2        1        1        765        567           11  

在我的查询中,我现在选择所有条目为“Thing1”= x,“Thing2”= y,“Thing3”= z(这三列是选择标准。)

获取这些行的目的是对以下每个数据列执行操作:如果以“avg”开头,我想计算所有选定条目上特定列的平均值。在另一个前缀上,我想计算出哪个数字最多。

有没有办法让MySQL数据库为我做这一切?我需要一个自动计算列平均值的SQL语句,并执行其他操作。

例如,假设我选择标准Thing1 = 2,Thing2 = 1且Thing3 = 1。有没有办法编写语句,以便只返回一个条目,计算的东西?

      Result                              
 ----------------- ----------------- ---- 
  (123+987+765)/3   (456+789+567)/3   11  

我听说这应该是可能的,并且这是一种不让数据库直接执行这些操作的错误方法。不幸的是,我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

试试这个: -

SELECT ID, AVG(avgData1) AS RESULT1, AVG(avgData2) AS RESULT2, highestEtc
FROM YOUR_TAB
WHERE Thing1 = 2
AND Thing2 = 1 
AND Thing3 = 1
GROUP BY ID
HAVING COUNT(highestEtc) > 1;

希望这会对你有所帮助。