SQL извраты
Не хватает в SQL аггрегирующей операции типа MIN или MAX(поле1, поле2, поле3), т.е. минимум или максимум тупла из полей. Операция сравнения задана обычным образом - сначала сравниваем первое поле, если больше-меньше, то возвращаем результат, если равны - переходим к следующему, итд.
Тогда можно было бы простым образом решать классическую задачу "при группировке выбрать значения некоторых полей в тех записях, где заданное поле имеет минимальное или максимальное значение". Типа например "состояние объекта на начало и конец дня" - группируем по дням и объектам, а аггрегацию делаем в виде MIN(DT,STATUS) и MAX(DT,STATUS).
Тогда можно было бы простым образом решать классическую задачу "при группировке выбрать значения некоторых полей в тех записях, где заданное поле имеет минимальное или максимальное значение". Типа например "состояние объекта на начало и конец дня" - группируем по дням и объектам, а аггрегацию делаем в виде MIN(DT,STATUS) и MAX(DT,STATUS).
no subject
min(least()), max(greatest())?
no subject
no subject
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_least
Oracle тоже.
Мне вообще почему-то казалось что это ANSI SQL.
no subject
no subject
Я говорю про аггрегирующую функцию для туплов из полей. Т.е. сравниваются не поля из списка, а туплы составленные из полей в разных записях при аггрегации.
no subject
Вообще это типа лексографического сравнения. Хотя вот насчёт нескольких полей не уверен что умеют они так. Разве что конкатинировать.
no subject
no subject
no subject
no subject
no subject
нестандарт, разумеется.
склеивать в строку -- тоже вариант, но некоторые значения слишком велики могут быть (строки, например).
no subject
no subject
:)))
Если кроме шуток, то возможно почти все, но в каждом случае будет очень сильно зависеть от конкретной СУБД.