Что означает COUNT (DISTINCT x || y)? - PullRequest
2 голосов
/ 23 апреля 2020

Не могли бы вы помочь мне понять, что означает это выражение в Oracle SQL?

COUNT(DISTINCT x || y) 

Это просто конкатенация?

Ответы [ 2 ]

4 голосов
/ 23 апреля 2020

Да, это просто конкатенация. Это простой способ эмулировать подсчет различных кортежей (x, y), который невозможен при COUNT(DISTINCT ..) в Oracle.

В зависимости от набора данных, он имеет недостаток, поскольку возвращает неверный результат на следующий набор данных

SELECT count(DISTINCT x || y)
FROM (
  SELECT 'a' x, 'bc' y FROM dual
  UNION ALL
  SELECT 'ab' x, 'c' y FROM dual
) t
1 голос
/ 23 апреля 2020

Это всего лишь конкатенация, и, как правильно сказал @Lukas, это не даст правильного результата.

Чтобы получить правильный результат, вы можете поместить некоторый разделитель между двумя столбцами, но убедитесь, что этот разделитель не используется ни в одном столбце.

COUNT(DISTINCT x || '````' || y)  -- I am using four times ` as delimeter
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...