Рассчитать процент используемых полей (столбцов) в MySQL

0

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

Я хочу обновить новое поле таблицы 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
    Ах, ты имеешь в виду проверить, сколько полей не являются их значениями по умолчанию и есть ли они "используемые"?
Показать ещё 6 комментариев
Теги:

1 ответ

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 в соответствии с количеством столбцов, которые у вас есть.

Изменить: Адаптированное решение 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
    Это делает вещь, спасибо, Бобби
  • 0
    в противном случае UPDATE приводит к SET SETPercent = (IF (имя не равно NULL, 1, 0) + IF (возраст не равен NULL, 1, 0) + IF (обозначение не равно NULL, 1, 0) + IF (адрес не указан NULL, 1, 0)) / 4 * 100;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню