|
Найти зарплату по отделу ближайшую к средней | ☑ | ||
---|---|---|---|---|
0
Vlaloplo
28.05.21
✎
11:14
|
Всем привет. Есть прикладная задача в которой нужно получить среднюю ЗП по отделу и сотрудников, у которых зп ближе всего к средней
Получаю среднюю ЗП: ВЫБРАТЬ СРЕДНЕЕ(Сотрудники.Зарплата) КАК Зарплата, Сотрудники.Отдел КАК Отдел ПОМЕСТИТЬ ВТ_Средняя ИЗ Справочник.Сотрудники КАК Сотрудники СГРУППИРОВАТЬ ПО Сотрудники.Отдел ; Но никак не могу понять, как получить сотрудников по близжайшему значению.. |
|||
1
Timon1405
28.05.21
✎
11:18
|
Для каждого вычислить дельту со средним, взять минимум из дельт по абсолютному значению
выбор когда Зарплата-Средняя > 0 тогда Зарплата-Средняя иначе Средняя-Зарплата конец |
|||
2
acht
28.05.21
✎
11:18
|
Посчитать для сотрудника колонк модуля разности между средней зп и текущей зп. Выбрать тех, у кого она минимальна.
|
|||
3
Said_We
28.05.21
✎
11:36
|
(0) Опять лабораторная работа?
|
|||
4
Vlaloplo
28.05.21
✎
11:45
|
(3) Для себя изучаю) Хочется подтянуть тему запросов. Знакомый составляет задачи (Или может берет откуда, хз)
|
|||
5
СвинТуз
28.05.21
✎
11:46
|
Задачи такого типа могут дать при приеме на работу.
Нужная тема ... |
|||
6
acht
28.05.21
✎
11:48
|
(5) Соверщенно верно. Работодателям нужна возможность наблюдать за тем, как раскрываются кандидаты, демонстрируя свой истинный уровень знаний.
|
|||
7
Документовед
28.05.21
✎
11:49
|
(0) Как ты определяешь сотрудника отдела, если в течении месяца могут быть перемещения?
|
|||
8
Said_We
28.05.21
✎
11:58
|
Засунул в подзапросы, что бы было понятнее.
Но на 1С такое не работает. Оконных функций нет. Select * from (Select t.* ,Min(t.raznost) over(partition by t.otdel) as MinimumRaznost from (Select t.otdel as otdel ,t.sotr as sotr ,t.summa as summa ,avg(t.summa) over(partition by t.otdel) as srednee ,ABS(t.summa - avg(t.summa) over(partition by t.otdel)) as raznost from sotrudniki as t ) as t ) as t where t.raznost = t.MinimumRaznost |
|||
9
Said_We
28.05.21
✎
11:59
|
(4) Не изучай запросы на 1С. Многое в мире запросов SQL пройдет мимо тебя.
|
|||
10
Said_We
28.05.21
✎
12:01
|
К (8) Можно и короче по другому написать, но так в целях изучения понятнее.
|
|||
11
Dmitry77
28.05.21
✎
12:15
|
Есть виртуальные таблицы
В первой получаешь реальные зп Во второй среднюю В третьей отклонение В четвёртой выводишь нужные отклонения. |
|||
12
Said_We
28.05.21
✎
12:37
|
(0) к (11) да в 1С, наверное, придется использовать JOIN между таблицами со средней ЗП и найти отклонение. Потом создать ещё одну таблицу с минимальным по модулю отклонением. Потом ещё раз JOIN, что бы отфильтровать их по минимальному отклонению.
Короче, туды-сюды постоянные :-). Так как будет использоваться несколько раз JOIN, то время выполнения такого запроса будет на несколько порядков медленнее. Но в 1С по другому не бывает. |
|||
13
Said_We
28.05.21
✎
12:39
|
+ К (12) и текст запроса будет в 1С менее читабельный и по количеству строк длиннее.
Как-то так.... |
|||
14
Dmitry77
28.05.21
✎
12:44
|
(11) выбрать...
Поместить втЗПСотрудников Из... ; Выбрать... Из втЗПСотрудников. В общем почитать про поместить в запросах. |
|||
15
Said_We
28.05.21
✎
12:50
|
+ К (14)
И не забыть почитать про конструкцию WITH: WITH vt_1 (...) AS (Select min(t.А) as MinA From t as t ) , vt_2 (...) AS (Select max(t.А) as MaxA From t as t ) select t1.MinA ,t2.MinA From vt_1 as t1 ,vt_2 as t2 |
|||
16
1Сергей
28.05.21
✎
12:56
|
Найти больных с температурой близкой к средней по палате?
|
|||
17
Said_We
28.05.21
✎
13:24
|
(16) Это учебная задача. Посмотри темы, которые создал (0), он учится в ВУЗе. Учебные задачи часто оторваны от жизни и от реальных задач. Но учебные задачи хорошо помогают изучить инструмент - собственно это и есть их основная цель.
Поэтому задача нормальная. |
|||
18
Said_We
28.05.21
✎
14:31
|
(0) Получилось или нет?
Интересно же. |
|||
19
Vlaloplo
28.05.21
✎
15:32
|
(18) Спасибо за советы) Удивился, как много людей ответило, ещё не пробовал
В первую очередь попробую (11), звучит логично) Может читал между строк, а при чем здесь sql запросы? Знаю, что похожи в целом, но вроде вопрос про запрос в 1с был) |
|||
20
Said_We
28.05.21
✎
16:27
|
(19) Когда напишешь запрос на 1С можешь его 1:1 перевести на SQL. А потом и сравнить скорость выполнения конструкции запроса в (8) и переведенного из 1С.
Потом нам всем расскажешь :-) |
|||
21
Said_We
28.05.21
✎
16:33
|
(19) Как создавать внутренние таблицы на SQL пример синтаксиса в (15).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |