2010-09-10 2 views
0

Я хотел бы знать, есть ли какой-либо запрос для вычисления количества используемых полей (столбцов) в таблице для каждой строки (записи).Рассчитать процент используемых полей (столбцов) в MySQL

Я хочу, чтобы обновить таблицу новое поле, называемое percentage usage путем вычисления

(total number of used columns)/(total number columns) * 100 

для всех записей.

Любое предложение приветствуется. Благодаря


Например:

У меня есть таблица с именем leads:

Name  Age  Designation Address 

Jack  25  programmer  chennai 
Ram  30  ----------- ----------     
Rob  35  Analyst  ----------      

Я добавил новую колонку под названием usagepercent, и я хочу, чтобы обновить новое поле

Name  Age  Designation Address  usagepercent 

Jack  25  programmer  chennai  100 
Ram  30  ----------- ---------- 50 
Rob  35  Analyst  ---------- 75 

------- указывает пусто

+0

Уточнитните 'использовать'. –

+0

Ах, вы хотите проверить, сколько полей * не * их значение по умолчанию, а там для 'used'? – Bobby

+0

Используемая колонка означает обновленный или не пустой – shivg

ответ

1

Что-то, как это должно работать (если по умолчанию/пустое/неиспользованное значение полея является Null):

SET @percValue=25; 
UPDATE 
    leads 
SET 
    usagePercent = 
     IF(Name IS NOT NULL, @percValue, 0) + 
     IF(Age IS NOT NULL, @percValue, 0) + 
     IF(Designation IS NOT NULL, @percValue, 0) + 
     IF(Address IS NOT NULL, @percValue, 0); 

Вы должны изменить percValue в соответствии с количеством столбцов у вас есть.

Edit: адаптированный решение RSGanesh:

UPDATE 
    leads 
SET 
    usagePercent = (
     IF(Name IS NOT NULL, 1, 0) + 
     IF(Age IS NOT NULL, 1, 0) + 
     IF(Designation IS NOT NULL, 1, 0) + 
     IF(Address IS NOT NULL, 1, 0) 
     )/4 * 100; 
+0

Это вещь, спасибо бобби – shivg

+0

другим способом UPDATE приводит SET usagePercent = (IF (Name IS NOT NULL, 1, 0) + IF (Возраст IS NOT NULL , 1, 0) + IF (обозначение IS NULL, 1, 0) + IF (адрес IS NULL, 1, 0))/4 * 100; – shivg

Смежные вопросы