2009-05-21 2 views
0

У меня есть таблица, которая выглядит следующим образом:Выполнять сумму, среднее и умножение по всем столбцам в таблице?

id test1 test2 test3 test4 ... test200 
1  90  87  85  86  70 
2  100  95  83  92  80 
. 
. 
18000 

Я знаю, что есть стандартные операции для выполнения суммы и средних значений одного столбца и умножают значения двух столбцов вместе, но это можно сделать во всех столбцы в строке с заданным идентификатором? Если это не ясно, я хочу сделать что-то вроде this через строки вместо столбцов. Благодаря

+1

Отъезд ответ Винсент Ramdhanie в - я видел, как таблицы перекрестных это, они - реальная боль, чтобы сделать расчеты. – Knobloch

ответ

6

Возможно, вам лучше переделать таблицу так, чтобы в ней не было 200 столбцов.

например.

Id testnum score 
1 1  90 
1 2  87 
... 
2 1  100 
2 2  95 
... 
180000 

Теперь вы можете сделать запрос, как это:

select sum(score) as totalscore 
from mynewtable 
where id=1 
+0

+1 - Я бы рекомендовал не делать таблицы кросс-таблицы также – Knobloch

+0

Хорошо, я думаю, что это, вероятно, будет лучшим. Я пытался выяснить способ переделать таблицу, и это, вероятно, должно это сделать. Благодаря! –

+0

Кроме того, есть ли простой способ сделать это? Таблица, которую я создал, была импортирована csv ... –

2

Как насчет:

select id, sum(test1 + test2 + ...) as summation 
group by id 

Есть проблема, что у вас так много столбцов? Это решение не обрабатывает много столбцов плавно.

+1

Сумма должна работать, но он, вероятно, должен нормализовать эту таблицу. Это будет болезненно, если ему нужно добавить столбец каждый раз, когда он добавляет тест. –

+0

Хороший эхолог. Не понимали, что столбцы предназначены для тестовых данных. –

0

Возможно, какой-то искаженный SQL работает над содержимым всей строки (в этом я сомневаюсь), но вам все равно нужно указать имена столбцов, иначе у вас будут идентификационные номера, включенные в расчет.