Здравствуйте, появилась такая задача - подсчитать кол-во значений в нескольких группах при условии, что повторяющиеся значения учитывать нужно только один раз, в наиболее приоритетных группах.
Надеюсь, на примере будет понятнее, вот такая форма:
Повторяющиеся имена значат, что это один и тот же человек
(На поле "ВУЗ" не обращайте внимания)
Вот что с подсчётом:
______________________________________________________________________________________
|__________|_Как_есть:|_Как_должно_быть:_______________________________________________|
|
|Всего_____|___13_____|_9______________________________________________________________|
|Английский|____3_____|_3 _____________________________________________________________|
|Русский___|____5_____|_3_(Ирина и Катя не считаются, т.к. учтены в английском)_____________|
|Польский__|____4_____|_2_(Ирина и Веста не считаются, т.к. учтены в английском или русском)_|
|Другой____|____1_____|_1_____________________________________________________________|
|__________|__________|_______________________________________________________________|
Приоритет по возрастанию: Польский -> Русский -> Английский
Я думаю, можно сделать так:
убрать повторяющиеся значения, тогда число из группы с наименьшим приоритетом будет найдено сразу (Польский = 2),
затем из всех (с повторами) найти число из наивысшего приоритета (Английский = 3)
А потом вычесть из общего числа всё, что имеем и найти среднюю группу (Русский 9 - 2 - 3 - 1 = 3).
Осталось узнать, как убирать повторяющиеся значения из поля?
И наверно есть и вариант получше)
http://www.sql.ru/forum/1078283/podschyot-po-gruppam-bez-uchyota-povtorov