我有一个巨大的表,包含三个“选择”列和许多“数据”列。
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
我听说这应该是可能的,并且这是一种不让数据库直接执行这些操作的错误方法。不幸的是,我不知道该怎么做。
答案 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;
希望这会对你有所帮助。