2015-10-02 3 views
0

Есть ли функция SQL для возврата среднего значения в три?SQL для средней ценности Вместо MIN/MAX или FIRST/LAST

Например, предположим, что у меня есть стол с людьми, у которых есть три машины, отсортированные по алфавиту с помощью AutoMaker.

John: Ford 
John: Honda 
John: VW 

затем

MIN(AutoMaker) returns Ford. 
MAX(AutoMaker) returns VW. 

Есть ли аналогичная функция SQL, которая возвращает Honda?

Я работаю с MS Access и Oracle.

спасибо.

+0

Посмотрите на 'row_number' в Oracle. Однако, каков будет результат, если у людей будет более 3 автомобилей? Вы хотите перечислить все результаты, которые не являются 'min' и' max'? –

+0

выберите, где не max и где не min ... –

+0

Вы имеете в виду значение «MEDIAN»? – Beth

ответ

2

Короткий ответ: Нет. Это слишком специфично.

Более длинный ответ: это слишком специфично. Следовательно, «середина» в том, что вы сказали, на самом деле вторая запись. Но если у вас было 5 записей, это было бы третье, и так далее. Если вам это нужно, просто назначьте номер строки каждой строке (Oracle, Access), а затем выберите ((n + 1)/2) nd row (WHERE row_number = (n + 1)/2).

PS - это средний ряд, если у вас есть 4 строки? :)

+0

«[почему не оба?] (Https://www.youtube.com/watch?v=vgk-lA12FBk)» (2 и 3) –

+0

Эти данные не имеют 4 строки. У меня всего три, и мне нужно получить средний. – agnoob

0

Запрос может быть что-то вроде этого

select row_id, Field1 
FROM tbl 
where row_id = (select cInt(count(Field1)/2) from tbl) 

Проблема в доступе, что вы не имеете row_number Вы должны были бы добавить ROW_ID к столу, а затем заполнить ROW_ID 1,2, 3,4 (упорядочено по Field1)

Смежные вопросы