|
Непонятки с КОЛИЧЕСТВО() в запросе | ☑ | ||
---|---|---|---|---|
0
andrewks
19.11.11
✎
13:06
|
читаю ЖКК (в актуальной справке платформы то же самое):
------------------------------------------------------- Агрегатная функция КОЛИЧЕСТВО Функция исмеет следующий синтаксис: КОЛИЧЕСТВО([РАЗЛИЧНЫЕ] <Выражение>) Функция подсчитывает количество значений поля, указанного в параметре, попавших в выборку. В отличие от других агрегатных функций функция КОЛИЧЕСТВО допускает три способа использования. Во-первых, функция позволяет подсчитать количество значений указанного поля, не равных NULL. Во-вторых, функция позволяет подсчитать количество различных значений указанного поля, не равных NULL. Для этого перед спецификацией поля надо указать ключевое слово РАЗЛИЧНЫЕ. В-третьих, функция позволяет подсчитать количество строк в результате запроса. Для этого в качестве параметра функции надо указать звездочку "*". В качестве параметра функции можно указывать выражения, содержащие значения любого типа. Не может применяться к выражениям с типом ХранилищеЗначения и Строкам неограниченной длины. Пример: ВЫБРАТЬ КОЛИЧЕСТВО (*) КАК Всего, КОЛИЧЕСТВО (РАЗЛИЧНЫЕ Накладная.Номенклатура) КАК Разные ИЗ Документ.РасходнаяНакладная.Состав КАК Накладная Результат запроса: Всего Разные 24 8 ------------------------------------------------------- на практике же получается совсем не так, как описано, а так, как в примере (т.е. пример полностью не соответствует описанию). конкретно вопрос про КОЛИЧЕСТВО(*) при указании данной агрегатной функции в поле запроса вычисляется количество строк ДО группировок, т.е. никаким "количеством строк в результате запроса" даже не пахнет. при указании в поле итогов (кроме общих) - тут уже количество строк в данной группировке (без учёта итоговых) при указании в поле общих итогов - вот здесь и получаем количество строк в результате запроса (без учёта итоговых) это я чего-то недопонимаю, или документация топорно составлена? |
|||
1
rs_trade
19.11.11
✎
13:10
|
(0) читай BOL. будь мужиком блеать!
|
|||
2
Defender aka LINN
19.11.11
✎
13:15
|
"при указании данной агрегатной функции в поле запроса вычисляется количество строк ДО группировок, т.е. никаким "количеством строк в результате запроса" даже не пахнет." - переведи этот бред на русский язык.
|
|||
3
andrewks
19.11.11
✎
13:15
|
(1) с BOL всё понятно. вопрос про документацию от 1ЦЭ
|
|||
4
andrewks
19.11.11
✎
13:16
|
(2) отчего же бред? это означает, что если группировка была составлена из двух строк, то результат будет = 2, а не 1, если из трёх, соответственно, = 3
|
|||
5
rs_trade
19.11.11
✎
13:22
|
(3) да вроде все верно написано.
|
|||
6
rs_trade
19.11.11
✎
13:24
|
(4) если у тебя КОЛИЧЕСТВО (РАЗЛИЧНЫЕ ... то группировка составленная из двух строк может быть равна 1. внезапно.
|
|||
7
andrewks
19.11.11
✎
13:24
|
(5)
В-третьих, функция позволяет подсчитать количество строк в результате запроса. Для этого в качестве параметра функции надо указать звездочку "*". Результат запроса: Всего Разные 24 8 тут в результате запроса 24 строки? |
|||
8
andrewks
19.11.11
✎
13:25
|
(6) про РАЗЛИЧНЫЕ я не задавал вопрос. я вопрошаю _конкретно_ про (*)
|
|||
9
rs_trade
19.11.11
✎
13:28
|
(7) По моему у тебя проблемы с интерпритацией этой инфы. в тч накладной 24 строки, это следует из результата запроса
|
|||
10
andrewks
19.11.11
✎
13:30
|
(9) лично у меня проблем с интерпретацией этой инфы нет. я-то понял, что было просмотрено 24 записи, но в результате запроса _одна_ строка
|
|||
11
rs_trade
19.11.11
✎
13:33
|
(10) так функция то, агрегатная
|
|||
12
rs_trade
19.11.11
✎
13:35
|
+(11) тот же GROUP BY, но с подсчетом значений столбца
|
|||
13
andrewks
19.11.11
✎
13:37
|
короче, я так понял, что никто, кроме меня, не видит разницы между количеством строк ДО и ПОСЛЕ группировок
|
|||
14
rs_trade
19.11.11
✎
13:40
|
(13) видимо да. не читайте до обеда советских газет и ЖКК
|
|||
15
andrewks
19.11.11
✎
13:42
|
по-русски говоря, эта агрегатная функция в поле запроса и в поле итогов опирается на разные данные
|
|||
16
rs_trade
19.11.11
✎
13:46
|
(15) пример с итогами можно? что не понятно?
|
|||
17
andrewks
19.11.11
✎
13:52
|
Запрос:
| select | ПрихНакл.Ссылка | ,ПрихНакл.Склад | ,ПрихНаклМат.Материал | ,count(*) as Всего | ,count(distinct ПрихНакл.Ссылка) as ВсегоНакл | ,count(ПрихНакл.Склад) as ВсегоСклад | ,count(ПрихНаклМат.Материал) as ВсегоМатер | from | Документ.ПриходнаяНакладная as ПрихНакл | left join | Документ.ПриходнаяНакладная.Материалы as ПрихНаклМат | on ПрихНакл.Ссылка=ПрихНаклМат.Ссылка | group by | ПрихНакл.Ссылка | ,ПрихНаклМат.Материал | order by | ПрихНакл.Ссылка | ,ПрихНаклМат.Материал | totals | count(*) as Всего | ,count(distinct ПрихНакл.Ссылка) as ВсегоНакл | ,count(ПрихНакл.Склад) as ВсегоСклад | ,count(ПрихНаклМат.Материал) as ВсегоМатер | by | overall | ,ПрихНакл.Ссылка | результат: http://savepic.su/755519.htm конкретно там, где курсор стоит - тут рассматриваю случай, когда в ТЧ дока две строки с одинаковым материалом. да, записей две, но строка в результате запроса одна (после применения группировки) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |