Странное поведение, когда группа SQL выполняется на MarkLogic TDE

Когда я запускаю следующий SQL-запрос в TDE, определенном в Marklogic 9.0.5, я не получаю результатов, даже если TDE заполнен данными, а конкретная строка (номер), которую я запрашиваю, не имеет значения NULL для любой строки.

SELECT number, count(*) FROM object
GROUP BY number

[["number","count(*)"],[null,0]]

Когда я запускаю запрос Group By по идентификатору, я получаю результаты:

SELECT id, count(*) FROM object
GROUP BY id

[["id","count(*)"],["00e0172adcd406240eebe0d673eeac0b",1],["0276e6d7093440e0998ae9eca13e1d55",1, etc.]

Также, когда я включаю идентификатор в исходный запрос в качестве фиктивного поля, я получаю ожидаемые результаты:

SELECT number, count(*), id FROM object
GROUP BY number

["number","count(*)","id"],["1215837",29,"071b9a599acff0dd7479734e8eb0de31"],["1230182",28,"00e0172adcd406240eebe0d673eeac0b"],["945146",29,"ebfe1da3847d5b0ac14d479436d03e86"]]

Почему я не получаю результатов по первому запросу? Я ожидал бы результата, аналогичного последнему запросу, за исключением идентификатора.


person T. Philippi    schedule 19.08.2019    source источник
comment
Обычно вы группируете по тем же столбцам, что и SELECT, за исключением тех, которые являются аргументами для установки функций.   -  person jarlh    schedule 19.08.2019
comment
@T. Филиппы Вы пробовали?   -  person Menelaos    schedule 21.08.2019


Ответы (1)


Я посмотрел документацию по marklogic. Я вижу, что это не 100% рациональная база данных SQL, но более интересно то, что их примеры с count() всегда показывают count(1).

см. https://www.marklogic.com/blog/sql-group-by/

Пример:

получить базовое количество полов, например «мужской: 22, женский: 31», в СУБД мы делаем это:

select gender, count(1) from person group by gender

Это длинное шоу, но попробуйте:

SELECT number, count(1) FROM object
GROUP BY number
person Menelaos    schedule 19.08.2019