Topic: Поиск максимального значения

Доброго времени суток! Прошу помочь с вычисляемым полем для нахождения максимального значения.
Представим, что существует таблица со следующими полями:

Baza               
id  1В  1П  1О  2В  2П  2О  max

1В...2О - поля с заданными значениями. В вычисляемое поле max записываю код:
(
select max(ЗНАЧЕНИЕ)
from (SELECT([1В]) AS ЗНАЧЕНИЕ FROM Baza
UNION
SELECT([1П]) AS ЗНАЧЕНИЕ FROM Baza
UNION
SELECT([1О]) AS ЗНАЧЕНИЕ FROM Baza
UNION
SELECT([2В]) AS ЗНАЧЕНИЕ FROM Baza
UNION
SELECT([2П]) AS ЗНАЧЕНИЕ FROM Baza
UNION
SELECT([2О]) AS ЗНАЧЕНИЕ FROM Baza)
)
На выходе получаем:

Baza               
id  1В  1П  1О  2В  2П  2О  max
1   2     6     8     3     4     6     8
2   4     5     1     0     3     4     8
3   7     6     7     3     1     1     8

Вычисляемое поле max возвращает максимум из всех значений независимо от id строки. Какое условие WHERE нужно задать, чтобы вычисляло для каждого id (по каждой строке)?

Re: Поиск максимального значения

Приветствую,

Попробуйте более простой запрос для выч. поля

(SELECT MAX(1В, 1П, 1О, 2В, 2П, 2О) FROM Baza Bz WHERE Bz.id=Baza.id)
Dmitry.

3 (edited by Vitaly 2016-03-18 03:57:10)

Re: Поиск максимального значения

Дмитрий, ругается:

unrecognized token:"1В"

и не очень понятно что за таблица Bz? Хочется какое-то максимально простое решение в рамках одной таблицы (их и так уже почти 30 штук)
P.S. Добавил проект для примера

Post's attachments

Attachment icon макс.rar 3.34 kb, 397 downloads since 2016-03-18 

Re: Поиск максимального значения

Попробуйте так, поля на русском языке необходимо взять в кавычки

(SELECT MAX("1В", "1П", "1О") FROM Baza Bz WHERE Bz.id=Baza.id)
Dmitry.

Re: Поиск максимального значения

Огромное спасибо!  Работает! Есть только один недостаток - если какое-либо поле NULL (не заполнено), то при вычислении максимума вернет NULL.

Re: Поиск максимального значения

Vitaly wrote:

Огромное спасибо!  Работает! Есть только один недостаток - если какое-либо поле NULL (не заполнено), то при вычислении максимума вернет NULL.

Попробуйте так

(SELECT MAX(IFNULL("1В",0), IFNULL("1П",0), IFNULL("1О",0)) FROM Baza Bz WHERE Bz.id=Baza.id)
Dmitry.

Re: Поиск максимального значения

Дмитрий, спасибо еще раз! Все работает! Красота!

Re: Поиск максимального значения

а у меня например другая проблема.
при выборе макисмального значения в группе

SELECT
mo.kod,
mo.name,
mo.oktmo,
max(R_A80),
FROM kash
left outer join azs on azs.id=kash.id_azs
left outer join mo on mo.id=azs.id_mo
GROUP BY mo.oktmo

значения отражаются целыебез копеек (вернее копейки ), в то время как сами значения из которых происходит выборка имеют значения после запятой.
к примеру есть записи
группа 1   25,50
группа 1   24,80
группа 2   29,00
группа 2   28,15

в результате запроса выходит
группа 1   25,00
группа 2   29,00

а должно быть
группа 1   25,50
группа 2   29,00

Чучкин Евгений

Re: Поиск максимального значения

вроде понял.
в структуре базы неверно выбрал типы полей. надо было ставить вещественные числа а я выбрал целые числа

Чучкин Евгений

Re: Поиск максимального значения

В дополнение к вопросу Виталия.
Как сформулировать правильно запрос не по максимальному значению а по минимальному игнорируя нулевые значения (не пустые)

Чучкин Евгений

Re: Поиск максимального значения

Xexrby Tdutybq wrote:

В дополнение к вопросу Виталия.
Как сформулировать правильно запрос не по максимальному значению а по минимальному игнорируя нулевые значения (не пустые)

достаточно заменить слово MAX на MIN

(SELECT MIN(IFNULL("1В",0), IFNULL("1П",0), IFNULL("1О",0)) FROM Baza Bz WHERE Bz.id=Baza.id)
Dmitry.

Re: Поиск максимального значения

но я так понимаю для компа ноль и пусто все таки разные вещи.
ноль это вес таки число а пусто это и есть пусто.

Чучкин Евгений

Re: Поиск максимального значения

Xexrby Tdutybq wrote:

но я так понимаю для компа ноль и пусто все таки разные вещи.
ноль это вес таки число а пусто это и есть пусто.

Приложите пожалуйста ваш тестовый проект, в котором это необходимо реализовать, постараюсь что нибудь придумать.

Dmitry.

Re: Поиск максимального значения

да я честно сказть пока не пробовал. просто прежде чем делать - размышляю. может и будет работать smile

Чучкин Евгений

Re: Поиск максимального значения

пока идет еще тестирование проги я вобщем то могу и поставить чтобы нули не ставились и тогда поле будет как раз такое NULL.

Чучкин Евгений

Re: Поиск максимального значения

заменил макс на мин - ничего не вышло. отражает минимальные значения как нольа мне нужно выбрать минимальные значения игнорируя нулевые данные

Чучкин Евгений

Re: Поиск максимального значения

сорри за беспокойсвто. разобрался.
SELECT
mo.kod,
mo.name,
mo.oktmo,
MIN(Z_A80),
MIN(R_A80)
FROM kash
left outer join azs on azs.id=kash.id_azs
left outer join mo on mo.id=azs.id_mo
where Z_A80 >0 or R_A80>0
GROUP BY mo.oktmo
order by mo.kod

Чучкин Евгений

Re: Поиск максимального значения

нет все таки не работет

Чучкин Евгений

Re: Поиск максимального значения

Xexrby Tdutybq wrote:

нет все таки не работет

Пожалуйства приложите проект с данным запросом.

Dmitry.