Вопрос про группировки #219390


#0 by azernot
Люди ответьте на вопрос При описании группировки в тексте запроса: 1. Все поля должны делиться на те, по которым производится группировка, и на агрегатные функции (рассчитываемые поля)     2. Все поля должны делиться на те, по которым производится группировка, на агрегатные функции (рассчитываемые поля) и на поля вложенных таблиц                         3. Чем выше определяется группировка, тем выше должно определяться поле в запросе             4. Перечисленные ограничения не действуют
#1 by rsv
4
#2 by Buran
1
#3 by azernot
Вариант ответа 1 - неверный. Я так ответил изначально, меня зарубили.. Можешь пояснить?
#4 by rsv
А что тут пояснять. Вот зашел вот в QA  и написал select ID from rnp froup by ID Отработало без проблем. Значит 4.
#5 by rsv
Хотя может быть и 3 но не 1 и 2.
#6 by azernot
А Если напишешь Selest ID, Code, Sum from rnt group by ID Сработает?
#7 by rsv
Нет конечно. Но это не значит если ты хочешь делать группировку то обязательно должен указывать агрегирующую функцию.
#8 by Buran
Проверил в конструкторе. 3 ВЫБРАТЬ    Выпуск.Ссылка,    ) ИЗ
#9 by rsv
А первый ответ обязывает при группировке обязательно в выходные поля включать агрег. функцию(и)
#10 by azernot
а какой смысл имеет в выходной таблице поле по которому нет группиовки и агрегатной функции? ТОвар1 100 шт Товар2 200 шт Товар3 300 т ТОвар4 500 ед ТОвар5 50  т Теперь Выбор Товар, КолВо, ЕдИз Из ... СГруппировать по ЕдИзм Что мне даст? Шт - ?? т  - ?? Ед - ?? Вот если я применю Сумм(КолВо) Тогда Но поле ТОВАР в данном случае тоже смысла не имеет..
#11 by rsv
Какой смысл - это вопрос уже десятый или двадцатый. Запрос отрабатывает нормально и без агр.функции. Наличие функции необязательно при наличии группировочных полей.
#12 by azernot
Фигушки... "ВЫБРАТЬ {Форма.Отчет}: Ошибка при вызове метода контекста (Выполнить): {(4, 2)}: Поле не входит в группу "ОстаткиМатериаловОбороты.Склад" по причине: {(4, 2)}: Поле не входит в группу "ОстаткиМатериаловОбороты.Склад" <<?>>ОстаткиМатериаловОбороты.Склад,
#13 by azernot
Значит путём исключения вычисляем верный ответ - 2. Только вот обосновть не смогу. Кто сможет объяснить/рассказать?
#14 by rsv
:) Ну давай договоримся что ты будешь группировать поля все . :) Т.е. не select ID,DESCR from table group by ID А вот так  select ID,DESCR from table group by ID,DESCR А ты подменяешь понятия  select ID,DESCR,sum(sum_) from table group by ID
#15 by rsv
select ID,DESCR from table group by ID,DESCR Эта конструкция не требует агркгатной функции. А это просто неправильна  и не потому что там нет функции select ID,DESCR from table group by ID,DESCR
#16 by rsv
Извиняте так вот правильно А это просто неправильна  и не потому что там нет функции select ID,DESCR from table group by ID
#17 by Andrey_spb
Я бы ответил 2
#18 by azernot
Ну так поля-то у тебя всё равно только те по которым осуществляется ГРУППИРОВКА. Смысл ответов 1 и 2 (как я понимаю) в том что поля в случае применения группировки могут быт либо ГРУППИРУЮЩИМИ, либо с Агрегатными функциями. Нигде из ответов не следует что обязательны агрегатные функции. Это я уже вычислил.. А вот почему?
#19 by Andrey_spb
+ потому что поля не входящие в перечисленные категории использовать нельзя.
#20 by rsv
А кто енто интересно обязал при группировках обязательно всключать агр.функции в запрос ???? Вот если бы при интерпретации такой конструкции select ID,DESCR from table group by ID,DESCR платформа выдала бы сообщение о обязательном наличии функции  тогда да.
#21 by rsv
Все поля должны делиться на те, по которым производится группировка, и на агрегатные функции (рассчитываемые поля)   Здесь стоит И . И группировочные И агрегируемы. Очень и очень категорично
#22 by azernot
я перефразирую ответы Поля должны быть 1. - Группирующими. - Группирующими, с агрегатными функциями 2. - Группирующими; - с агрегатными функциями; - Группирующими, с агрегатными функциями - Поля вложенных таблиц - Группирующие,  поля вложенных таблиц - Группирующими, с агрегатными функциями, поля вложенных таблиц
#23 by Andrey_spb
Ну если посмотреть с этой стороны то можно согласиться с 4. Но, заметь в нету слова ОБЯЗАТЕЛЬНО
#24 by azernot
"Делится на" <> "Обязательно присутствовать"
#24 by rsv
А 2 ответ еще подмешивает наличие полей вложенного запроса. А что обязательно в конструкции запроса должен быть вложенный запрос ????????
#26 by Andrey_spb
Вобщем, смысл в том, что кроме группирующих и агрегатных могут быть и поля вложенных таблиц
#27 by azernot
Andrey_spb, что означают в данном вопросе "поля вложенных таблиц"?
#28 by Andrey_spb
Поля "через точку" от группируемого, я так понимаю...
#29 by azernot
А можно пример запроса и образ результата запроса с вложенными таблицам. Понимаю, что наглею... Но блин не могу въехать что это за хрень такая!
#30 by rsv
Вложенная таблица = вложенный запрос.
#31 by Andrey_spb
По-твоему можно сгруппировать по вложенному запросу? По полю да, но не по самому же?!
#32 by azernot
Нашёл такую фразу "Вложенная таблица" - это напрмимер табличная часть документа, справочника.. Т.е. в запросе это таблица ОказениеУслуги.ПереченьНоменклатуры ВЫБРАТЬ    ОказаниеУслуги.ПереченьНоменклатуры.(        Номенклатура,        Сумма    ), При этом, конструктор запросов при попытке группировки по полю Склад ругается! Говорит что нельзя группировать по полям внешних таблиц при наличии вложенных таблиц. Таким образом похоже, что и ответ 2 неверный... Может действительно rsv прав? Может всё проще чем думается?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С