|
запрос , нужна помощь 🠗 (Волшебник 05.09.2022 08:36) | ☑ | ||
---|---|---|---|---|
0
Hach49
04.09.22
✎
20:42
|
прохожу тест,Уважаемые Гуру помогите,наверное туплю..но..
Есть непериодический регистр сведений Тарифы с измерениями Должность, Проект, и ресурсом Тариф (число). В этом регистре можно задать тариф (часовой) по должности, а также тарифы по этой должности с уточнением до конкретного проекта. Т.е. по одной должности может быть несколько записей: с пустым проектом - это основной тариф, с заполненными проектами - это уточненные тарифы по конкретным проектам. На вход в запрос подается временная таблица Данные, в которой есть колонки: Должность, Проект, КоличествоЧасов. Напишите текст запроса для расчета стоимостей по данным временной таблицы. Пример: Регистр сведений "Тарифы" (Должность, Проект, Тариф): "Программист", <Пусто>, 100 "Ведущий программист", <Пусто>, 150 "Ведущий программист", "Фирма1", 200 Временная таблица "Данные" (Должность, Проект, КоличествоЧасов): "Программист", "Фирма1", 5 "Программист", "Фирма2", 10 "Ведущий программист", "Фирма1", 2 "Ведущий программист", "Фирма2", 10 Нужно получить следующий результат (Должность, Проект, КоличествоЧасов, Стоимость): "Программист", "Фирма1", 5, 500 (=5*100) "Программист", "Фирма2", 10, 1000 (=10*100) "Ведущий программист", "Фирма1", 2, 400 (=2*200) "Ведущий программист", "Фирма2", 10, 1500 (=10*150) |
|||
1
Hach49
04.09.22
✎
20:44
|
Помогите,плз..хотя я бы сам за такое заполнение регистров руки бы оторвал..или я не прав?
|
|||
2
Hach49
04.09.22
✎
20:48
|
скорее всего туплю,но помогите плз..если возможно
|
|||
3
Vaderonk
04.09.22
✎
20:50
|
(0) Добрый вечер, могу подсказать в сторону левого соединения. Мы можем сразу объединить записи сразу по должности + проект, итог получится
Итог Программист Фирма1 5 200 (должность,проект, количествочасов, тарифцена) Программист Фирма2 10 NULL Следующее объединение требуется только в тех строках, где результат объединение будет NULL и нужно будет объединение делать по должности только (та как по проекту нет конкретной ставки). Ну и в результате колво часов*тариф цену как новую колонку |
|||
4
СеменовСемен
04.09.22
✎
20:57
|
если иерархии проектов нет, то 2 соединение - по проекту и по пустому
|
|||
5
Hach49
04.09.22
✎
20:59
|
(3) Благодарю,я так уже пробовал сегодня..вот уже думаю - возможно ли это?и не засада ли от тестировщика?
просто вот это : Регистр сведений "Тарифы" (Должность, Проект, Тариф): "Программист", <Пусто>, 100 "Ведущий программист", <Пусто>, 150 "Ведущий программист", "Фирма1", 200 |
|||
6
Hach49
04.09.22
✎
20:59
|
(4) Нет,не получится..пробовал
|
|||
7
СеменовСемен
04.09.22
✎
21:01
|
(6) неправильно значит пробовал. покажи запрос
|
|||
8
Hach49
04.09.22
✎
21:02
|
(4) благодарю за участие,в том то и дело - засада какая то(
|
|||
9
Hach49
04.09.22
✎
21:04
|
(7) ну вот,пакеты,классика
ВЫБРАТЬ ДанныеВТ.Должность КАК Должность, ДанныеВТ.Проект КАК Проект, ДанныеВТ.КоличествоЧасов КАК КоличествоЧасов ПОМЕСТИТЬ ДанныеВТ ИЗ РегистрСведений.ДанныеВТ КАК ДанныеВТ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Тарифы.Должность КАК Должность, Тарифы.Проект КАК Проект, Тарифы.Тариф КАК Тариф ПОМЕСТИТЬ ТарифыВТ ИЗ РегистрСведений.Тарифы КАК Тарифы ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДанныеВТ.Должность КАК Должность, ДанныеВТ.Проект КАК Проект, ДанныеВТ.КоличествоЧасов КАК КоличествоЧасов, ТарифыВТ.Тариф КАК Тариф ИЗ ДанныеВТ КАК ДанныеВТ левое СОЕДИНЕНИЕ ТарифыВТ КАК ТарифыВТ ПО ДанныеВТ.Должность = ТарифыВТ.Должность И ДанныеВТ.Проект = ТарифыВТ.Проект |
|||
10
Hach49
04.09.22
✎
21:12
|
последний вопрос остался,никак не решу..(
|
|||
11
RomanYS
04.09.22
✎
21:20
|
(10) Если тарифа по проекту нет, то должен использоваться базовый?
|
|||
12
Hach49
04.09.22
✎
21:21
|
(11) ..получается да,базовый,но он то - <Пусто>,этот базовый
|
|||
13
Vaderonk
04.09.22
✎
21:22
|
(10) могу еще подсказать что ты можешь сделать не только таблицу ТарифыВТ, но и сразу ТарифыВТБазовыйТариф где пустой проект и в итоговой таблице так же объединять с твоей таблице - для последующего расчета
|
|||
14
RomanYS
04.09.22
✎
21:26
|
(12) ...
ЕСТЬNULL(ТарифПоПроекту.Тариф, ТарифБазовый.Тариф) КАК Тариф ИЗ ДанныеВТ КАК ДанныеВТ ЛЕВОЕ СОЕДИНЕНИЕ ТарифыВТ КАК ТарифПоПроекту ПО ДанныеВТ.Должность = ТарифПоПроекту.Должность И ДанныеВТ.Проект = ТарифПоПроекту.Проект ЛЕВОЕ СОЕДИНЕНИЕ ТарифыВТ КАК ТарифБазовый ПО ДанныеВТ.Должность = ТарифБазовый.Должность И (&ПустойПроект = ТарифБазовый.Проект) |
|||
15
Hach49
04.09.22
✎
21:30
|
(13) да,спасибо..попробую
|
|||
16
Hach49
04.09.22
✎
21:31
|
(14) &ПустойПроект,а вот это уже нельзя(
|
|||
17
RomanYS
04.09.22
✎
21:34
|
(16) Значение(Справочник.Проекты.ПустаяСсылка)
|
|||
18
СеменовСемен
04.09.22
✎
21:34
|
(16) с чего это вдруг?
|
|||
19
RomanYS
04.09.22
✎
21:36
|
(13) Это ты ему задачу дал))?
|
|||
20
Vaderonk
04.09.22
✎
21:45
|
(19) Думаю тратить не 5 минут на запрос, а 3-4ч это и есть то самое пресловутое самообучение.
|
|||
21
Hach49
04.09.22
✎
21:48
|
(20) да,я учусь,приведи пожалуйста ,запрос на этот тестовый вопрос?
|
|||
22
RomanYS
04.09.22
✎
21:50
|
(20) Это от человека сильно зависит, кому-то достаточно один раз показать и он поймет. А кто-то будет в муках рожать код, а через X дней придёт с таким же вопросом.
|
|||
23
СеменовСемен
04.09.22
✎
21:52
|
(21) значит не готов еще к таким задачам. нужно еще теорию поизучать
|
|||
24
Dmitrii
гуру
05.09.22
✎
00:00
|
(21) Тебе дали готовый ответ в (14) и поправкой в (17) с учетом (16).
Что тебе ещё надо? Вариант из (13) ничем по сути отличается, только тем, что там предлагается нарисовать ещё одну ВТ, получить которую можно с использованием того же самого условия на пустой проект. Других ответов всё равно не будет. Только варианты одного и того же решения, отличающиеся мелкими нюансами. Тебе ведь всё равно надо получить для каждой записи о должности и проекте соответствующую запись о тарифе либо для данного проекта, либо для пустого проекта (базовый тариф). А как ты получишь запись о тарифе для пустого проекта, если не проверишь, что проект пустой (хоть в условии ГДЕ, хоть в условии соединения)? Если ты не можешь понять готового ответа, то см.(23). |
|||
25
Hach49
05.09.22
✎
06:36
|
всем большое спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |