Среднее значение из таблицы sql

572
07 февраля 2017, 20:25

Есть задача сформировать базу для личных целей. Исходные данные более 2000 заданий 5 работников 2 вида оценок:

1) Оценка качества по шкале супер,отл,хор,удов,неуд,ужас,срам.
2) Во второй шкале оценок 6 видов оценок пусть будет 1,2,3,4,5,6.

Вопрос : как определить итоговую оценку по заданию по оценке большинства рабочих. Вопрос 2: Как определить самые сложные задания?

К примеру все 5 поставили оценку. Или 2 человека одну оценку а остальные разные( оценка двух человек будет правильной) и еще 1 вариант итоговой оценки : средняя оценка пример: если оценки большинства не существует, то оценка формируется следующим образом двое поставили хор двое поставили неуд значит оценка будет удов.

Примечание: Вторая шкала практически нигде не учитывается!

Пример таблицы:

INSERT INTO Test (
  `zadanie`,
  `Id_Otcenki`, 
  `login`, 
  `otsenka1`,
  `otsenka2`)
VALUES
  (1,1,denis,хор,2),
  (2,1,denis,ужас,1),
  (3,2,denis,хор,3),
  (4,1,denis,супер,1),
  (1,2,sergey,хор,2),
  (2,2,sergey,удов,1),
  (3,1,sergey,отл,3),
  (4,2,sergey,супер,1),
  (1,3,denis,удов,2),
  (2,3,denis,ужас,1),
  (3,3,denis,хор,3),
  (4,3,denis,супер,1),
  (1,4,tim,ужас,2),
  (2,4,tim,срам,1),
  (3,4,tim,отл,3),
  (4,4,tim,супер,1),
  (1,5,alex,супер,2),
  (2,5,alex,удов,1),
  (3,5,alex,неуд,3),
  (4,5,alex,супер,1),

На выходе нужно получить, что то типо этого:

Номер задания: итоговая оценка

  • 1:хор
  • 2:неуд
  • 3:хор
  • 4:супер
Answer 1

Кажется вот это подойдет:

SELECT zadanie, FLOOR(AVG(CASE otsenka1 
     WHEN 'супер' THEN 6 
     WHEN 'отл' THEN 5 
     WHEN 'хор' THEN 4 
     WHEN 'удов' THEN 3 
     WHEN 'неуд' THEN 2 
     WHEN 'ужас' THEN 1 
     WHEN 'срам' THEN 0
     END)) FROM Test GROUP BY zadanie`

Группирует по заданию, переводит содержимое otsenka1 в цифровой эквивалент, вычисляет средне-арифметическое и округляет вниз. В итоге получается задание и цифровая оценка.

READ ALSO
MySQL изменение даты в формате `text`

MySQL изменение даты в формате `text`

Есть поле формата text содержащее дату, пример даты: 0205

519
Ошибка при вставке Blob поля в таблицу MySQL

Ошибка при вставке Blob поля в таблицу MySQL

Имеется код вставки в БД:

458
Объединененные данные из двух таблиц с помощью двух других

Объединененные данные из двух таблиц с помощью двух других

Мне нужно, совместить данные из двух таблиц вот как выглядит схема

421