Помогите разобраться с запросами

1. AleksandrLeshkov 26.12.24 20:44 Сейчас в теме
Добрый день! Изучаю запросы, в задачнике решение задачи приведено таким запросом
ВЫБРАТЬ
	СУММА(ДанныеСотрудников.КоличествоВременных) КАК КоличествоВременных,
	СУММА(ДанныеСотрудников.КоличествоПостоянных) КАК КоличествоПостоянных,
	СУММА(ДанныеСотрудников.КоличествоФрилансеров) КАК КоличествоФрилансеров
ИЗ
	(ВЫБРАТЬ
		1 КАК КоличествоВременных,
		0 КАК КоличествоПостоянных,
		0 КАК КоличествоФрилансеров
	ИЗ
		Справочник.Сотрудники КАК Сотрудники
	ГДЕ
		Сотрудники.ВидСотрудника = ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Временный)
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		0,
		1,
		0
	ИЗ
		Справочник.Сотрудники КАК Сотрудники
	ГДЕ
		Сотрудники.ВидСотрудника = ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Постоянный)
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		0,
		0,
		1
	ИЗ
		Справочник.Сотрудники КАК Сотрудники
	ГДЕ
		Сотрудники.ВидСотрудника = ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Фрилансер)) КАК ДанныеСотрудников
Показать


Не могу понять и найти ответ, для чего при подсчёте количества сотрудников определённой категории используются 0 и 1. Правильно понимаю, что для того, чтобы система поняла, что это количество и требуется именно числовое значение? Почему бы просто не использовать Количество в группировке в каждом вложенном запросе? Помогите, пожалуйста, понять
По теме из базы знаний
Найденные решения
2. Sashares 33 26.12.24 22:18 Сейчас в теме
(1) Вы предлагаете использовать Количество в каждом вложенном запросе, то есть добавить еще 3 группировки.
В приведенном запросе используется группировка всего один раз.

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

ВЫБРАТЬ
        Сумма(Выбор Когда  Сотрудники.ВидСотрудника = ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Временный) Тогда 1 Иначе 0 Конец) КАК КоличествоВременных,
        Сумма(Выбор Когда  Сотрудники.ВидСотрудника = ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Постоянный) Тогда 1 Иначе 0 Конец) КАК КоличествоПостоянных,
        Сумма(Выбор Когда  Сотрудники.ВидСотрудника = ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Фрилансер) Тогда 1 Иначе 0 Конец) КАК КоличествоФрилансеров
    ИЗ
        Справочник.Сотрудники КАК Сотрудники
    ГДЕ
        Сотрудники.ВидСотрудника В (ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Временный),ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Постоянный),ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Фрилансер))
AleksandrLeshkov; EVKash; svilsa; user1619761; +4 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 26.12.24 22:18 Сейчас в теме
(1) Вы предлагаете использовать Количество в каждом вложенном запросе, то есть добавить еще 3 группировки.
В приведенном запросе используется группировка всего один раз.

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

ВЫБРАТЬ
        Сумма(Выбор Когда  Сотрудники.ВидСотрудника = ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Временный) Тогда 1 Иначе 0 Конец) КАК КоличествоВременных,
        Сумма(Выбор Когда  Сотрудники.ВидСотрудника = ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Постоянный) Тогда 1 Иначе 0 Конец) КАК КоличествоПостоянных,
        Сумма(Выбор Когда  Сотрудники.ВидСотрудника = ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Фрилансер) Тогда 1 Иначе 0 Конец) КАК КоличествоФрилансеров
    ИЗ
        Справочник.Сотрудники КАК Сотрудники
    ГДЕ
        Сотрудники.ВидСотрудника В (ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Временный),ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Постоянный),ЗНАЧЕНИЕ(Справочник.ВидыСотрудников.Фрилансер))
AleksandrLeshkov; EVKash; svilsa; user1619761; +4 Ответить
3. AleksandrLeshkov 27.12.24 21:22 Сейчас в теме
(2) То есть, 1 и 0 здесь как счётчик? Если условие выполнено, то +1, правильно понял?
4. user2107191 27.12.24 21:27 Сейчас в теме
(3) Именно так.
AleksandrLeshkov; +1 Ответить
5. AleksandrLeshkov 27.12.24 21:39 Сейчас в теме
Всем спасибо большое за объяснение, теперь наконец-то понял
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот