SQL: - как взять среднее из нескольких (50) столбцов с большим количеством нулевых значений между ними, без перечисления 50 имен столбцов в SQL? - PullRequest
0 голосов
/ 10 июня 2011

как взять Среднее из нескольких (50) столбцов с большим количеством нулевых значений между ними, без перечисления 50 имен столбцов в SQL? Мне нужен более общий способ обработки такой ситуации?

Ответы [ 3 ]

0 голосов
/ 10 июня 2011

Я бы сделал это так

select (isnull(col1,0)+isnull(col2,0)+...+isnull(col50,0))/50 as averageval
from table

но ясно, что дизайн вашего стола неправильный. У вас должна быть таблица значений, которая содержит эти значения.

Вот как будет выглядеть правильный дизайн:

maintable
----------
id int

valuetable
----------
mainkey int -- foreign key to maintable.id
valuenum int -- may not be needed goes from 1 to 50
value int
0 голосов
/ 11 июня 2011

В какой-то момент вам нужно будет перечислить столбцы.Sql не будет знать, какие столбцы включить в вычисление, пока не будет сказано.
Если вы рассчитываете более одного раза, рассмотрите возможность размещения вычисляемого столбца в таблице для хранения вычисления, которое поддерживается SQL.

0 голосов
/ 10 июня 2011

Звучит так, как будто вам нужно будет перенести текущую таблицу, чтобы добиться этого.Насколько я знаю, нет способа транспонировать таблицу MySQL без указания точных столбцов для транспонирования.Поэтому я бы сказал, что лучшим способом было бы получить строку (или строки, в зависимости от ваших потребностей) с помощью таблицы SELECT * FROM, а затем вычислить среднее значение, используя любой язык сценариев / программирования, который вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...