я ищу элегантный способ написать версию PostgreSQL этого запроса:
SELECT count(distinct a,b) / count(distinct c,d)
FROM t1
GROUP BY e;
Это можно сделать с помощью функции CONCAT, но в этом случае я получаю огромное падение производительности.
Каждое количество различных может быть записано следующим образом:
SELECT count(*), e FROM
(SELECT a, b, e FROM t1 GROUP BY a, b, e) as tmp
GROUP BY e;
А ТАКЖЕ
SELECT count(*), e FROM
(SELECT c, d, e FROM t1 GROUP BY c, d, e) as tmp
GROUP BY e;
Но я не могу найти, как объединить их в один запрос, чтобы получить окончательный результат
Вот создайте таблицу для проверки синтаксиса:
CREATE TABLE t1 (
a int,
b int,
c int,
d int,
e int
);