Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
Приветствую, Товарищи Задание. Найти среднее значение всех зарплат, без учета их максимального и минимального значения. Сделал так. через MIN() MAX() OVER SELECT AVG(sal) FROM (SELECT sal, MIN(sal) OVER() min_sal, MAX(sal) OVER() max_sal FROM emp) x WHERE sal NOT IN (min_sal, max_sal) GO все работает. среднее значение зп выдает верное. Решил сделать другим способом, посредством функции ROW_NUMBER. SELECT AVG(SAL) avg_sal FROM(SELECT sal, ROW_NUMBER() OVER(ORDER BY sal) rn FROM emp) x WHERE rn NOT IN ((SELECT MAX(rn) FROM emp), (SELECT MIN(rn) FROM emp)) GO ПО идее я выбираю все начения кроме макс и мин зарплаты. однако запрсо не работает. подскажите на что обратить внимание, как переделать. Ошибка в том. что в предикате WHERE нельзя использовать агрегатные функции, поидее можно сделать с HAVING. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 09:31 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermama, Может вам медиана нужна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 09:35 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermama, В итоге я отчаялся и сделал SELECT AVG(SAL) avg_sal FROM(SELECT sal, ROW_NUMBER() OVER(ORDER BY sal) rn FROM emp) x WHERE rn BETWEEN 2 AND 13 GO и все работает верно, однако для этого запроса мне нужно посмотреть выборкой какой номер у максимального ранга. то есть потеря времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 09:37 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
TaPaK, нет, именно среднюю зп без учета максимальной зп во всей таблице и минимальной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 09:40 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermamaTaPaK, нет, именно среднюю зп без учета максимальной зп во всей таблице и минимальной бредовая сущность, 50 000 уйдёт, а 49999 учитываем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 09:42 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
Задача глупая, но у нее есть такое же глупое решение. Среднее — это сумма значений, деленная на количество значений. Нужный результат — это (сумма значений - min - max) деленная на (количество значений - 2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 09:56 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
Alibek B.Задача глупая, но у нее есть такое же глупое решение. Среднее — это сумма значений, деленная на количество значений. Нужный результат — это (сумма значений - min - max) деленная на (количество значений - 2). Нет, т.к. записей с максимальным и минимальным значением может быть больше чем по одной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:01 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermamadermama, В итоге я отчаялся и сделал SELECT AVG(SAL) avg_sal FROM(SELECT sal, ROW_NUMBER() OVER(ORDER BY sal) rn FROM emp) x WHERE rn BETWEEN 2 AND 13 GO и все работает верно, однако для этого запроса мне нужно посмотреть выборкой какой номер у максимального ранга. то есть потеря времениТак сделайте 2 ROW_NUMBER: Код: sql 1. 2. 3. 4. TaPaKбредовая сущность, 50 000 уйдёт, а 49999 учитываемВ принципе это широко используемое в статистической науке удаление верхних и нижних выбросов, хотя делают это обычно в более общем виде, а не "удаляя одно значение". И используется такое редко, всё таки медианное значение для подобных целей подходит лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:02 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
msLex, В моем случае не так, однако логика вернаю sal 800 950 1100 1250 1250 1300 1500 1600 2450 2850 2975 3000 3000 5000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:03 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
alexeyvg, нормально, я бы сам не додумался до такого решения( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:06 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermamaНайти среднее значение всех зарплат, без учета их максимального и минимального значения. Код: sql 1. dermamaвсе работает. среднее значение зп выдает верное. Насколько верно получаемое значение, если 2 или более записей имеют равное макс. или мин. значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:09 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
Топ топ в подзапросах Правда совершенно непонятно, вам надо исключить все максимальные-минимальные значения или только по одноой записи? Селект среднее Из Если оно не равно (максимальное из/ топ 1 ордер desc) и не равно (минимальное из/ топ 1 ордер asc) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:11 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
alexeyvg, и как с дублями будет жить? Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:12 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
AkinadermamaНайти среднее значение всех зарплат, без учета их максимального и минимального значения. Код: sql 1. dermamaвсе работает. среднее значение зп выдает верное. Насколько верно получаемое значение, если 2 или более записей имеют равное макс. или мин. значение? дак функция ROW_number дает уникальные значения для каждой зарплаты, не важно, сколько одинаковых значений зараплат у меня в итоговом множестве ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:15 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
TaPaKalexeyvg, и как с дублями будет жить? Код: sql 1. 2. 3. 4. 5. 6. Я показал, как модифицировать запрос ТС, логика которого ТС подходит. А то, что его запрос противоречит его же постановке задачи, это уже другое дело :-) Для сформулированной задачи, конечено, правильным будет ваш вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:16 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermamaAkinaпропущено... Код: sql 1. пропущено... Насколько верно получаемое значение, если 2 или более записей имеют равное макс. или мин. значение? дак функция ROW_number дает уникальные значения для каждой зарплаты, не важно, сколько одинаковых значений зараплат у меня в итоговом множестве Тьфу, не туда смотрел, всеравно MAX, MIN () OVER() просто находит мне макс и мин результаты по всему множеству, и уже тоже без разницы, сколько там одинаковых значений, ну как я понимаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:17 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermamadermamaпропущено... дак функция ROW_number дает уникальные значения для каждой зарплаты, не важно, сколько одинаковых значений зараплат у меня в итоговом множестве Тьфу, не туда смотрел, всеравно MAX, MIN () OVER() просто находит мне макс и мин результаты по всему множеству, и уже тоже без разницы, сколько там одинаковых значений, ну как я понимаю хотяяя, необходимо проверить, так сразу не смогу сказать, я изучаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:17 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermamaAkinaпропущено... Код: sql 1. пропущено... Насколько верно получаемое значение, если 2 или более записей имеют равное макс. или мин. значение? дак функция ROW_number дает уникальные значения для каждой зарплаты, не важно, сколько одинаковых значений зараплат у меня в итоговом множествефункция ROW_number просто нумерует записи Вот если есть зарплаты 100 100 90 80 70 60 То запрос с ROW_number уберёт только верхнюю и нажнюю строчки, и среднее будет считаться по 100 90 80 70 А нужно, наверное, так? 90 80 70 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:19 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
alexeyvgdermamaпропущено... дак функция ROW_number дает уникальные значения для каждой зарплаты, не важно, сколько одинаковых значений зараплат у меня в итоговом множествефункция ROW_number просто нумерует записи Вот если есть зарплаты 100 100 90 80 70 60 То запрос с ROW_number уберёт только верхнюю и нажнюю строчки, и среднее будет считаться по 100 90 80 70 А нужно, наверное, так? 90 80 70 Проверил свой запрос с MIN MAX () OVER счиатем верно, находит среднеее значение 240 на 3 = 80 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:27 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermamaalexeyvgпропущено... функция ROW_number просто нумерует записи Вот если есть зарплаты 100 100 90 80 70 60 То запрос с ROW_number уберёт только верхнюю и нажнюю строчки, и среднее будет считаться по 100 90 80 70 А нужно, наверное, так? 90 80 70 Проверил свой запрос с MIN MAX () OVER счиатем верно, находит среднеее значение 240 на 3 = 80 с ROW_NUMBER не првоерял, но по идее, да, по моей логике он только верхнее и нижнее значение откинет, а такоеже значение с самой большой зарплатой он оставит и я получу не верное значение.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:29 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermamaпо идее, да, по моей логике он только верхнее и нижнее значение откинет, а такоеже значение с самой большой зарплатой он оставит и я получу не верное значение..Тогда используйте вариант: TaPaK Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:33 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
alexeyvgВот если есть зарплаты 100 100 90 80 70 60 То запрос с ROW_number уберёт только верхнюю и нажнюю строчки, и среднее будет считаться по 100 90 80 70 А нужно, наверное, так? 90 80 70 если нужно последнее, то меняем Row_Number() на rank() (или dense_rank()) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:37 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:45 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
iap, всем большое спасибо, проблема с одинаковыми макс или мин значениемя поможет решить RANK так как он одинаковым значениям присвоит одинаковый ранг, чего не делает ROW_number, видео посмотрю после работы. Однако, у меня остался вопрос, как все таки решить именно МОЙ пример через ROW_NUMBER и с обязательным условием WHERE SELECT AVG(SAL) avg_sal FROM(SELECT sal, ROW_NUMBER() OVER(ORDER BY sal) rn FROM emp) x WHERE rn NOT IN ((SELECT MAX(rn) FROM emp), (SELECT MIN(rn) FROM emp)) GO ТО есть как сделать с NOT IN тоесть как изменить WHERE при этом во вложенном запросе не использовать еще один ROW_NUMBER , я имею ввиду следующий запрос SELECT AVG(SAL) avg_sal FROM(SELECT sal, ROW_NUMBER() OVER(ORDER BY sal) rn, ROW_NUMBER() OVER(ORDER BY sal desc) rm FROM emp) x WHERE rn > 1 AND rm > 1 GO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 11:18 |
|
||
|
Среднее значения без учета макс и мин!
|
|||
|---|---|---|---|
|
#18+
dermamaс ROW_NUMBER не првоерял, но по идее, да, по моей логике он только верхнее и нижнее значение откинет, а такоеже значение с самой большой зарплатой он оставит и я получу не верное значение.. Скажите, какой ответ должен быть для таких данных: 100 100 90 85 85 70 Варианты ответов: 91.67 90 86.67 87.5 другое значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 11:20 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39764026&tid=1688400]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 392ms |

| 0 / 0 |
