COUNT + DISTINCT

Игаев
Дата: 25.11.2009 15:55:53
подскажите, пожалуйста, как реализовать получение кол-ва уникального сочетания двух полей?

Для одного поля делаю вот так:
SELECT Count(DISTINCT(IdC))  FROM links


А для двух полей ругается:
SELECT Count(DISTINCT(Id,IdC))  FROM links

Какой правильный синтаксис?
orawish
Дата: 25.11.2009 16:00:36
Игаев,

select count(distinct a)*count(distinct b)
orawish
Дата: 25.11.2009 16:03:36
..эээ
count(distinct a||chr(1)||b)
andrey_anonymous
Дата: 25.11.2009 16:03:52
orawish,

и что будет? :)
Игаев
Дата: 25.11.2009 16:07:15
orawish
select count(distinct a)*count(distinct b)

умножение тут никак не лепится :)
Игаев
Дата: 25.11.2009 16:08:51
автор
select count(distinct Id||IdC)  from links

вот так получилось .... сейчас ещё разные варианты данных попробую
Игаев
Дата: 25.11.2009 16:11:31
спасибо большое!
_Alex_SMIRNOV_
Дата: 25.11.2009 16:11:49
select count(1) from (select DISTINCT Id,IdC from links)

а вот не всегда правильно отработете
select count(distinct Id||IdC)  from links

Id = 1
IdC = 11

Id = 11
IdC = 1
orawish
Дата: 25.11.2009 16:12:16
andrey_anonymous
orawish,

и что будет? :)

(это вопрос про умножение, как я понял)

не чисто, конечно.
работает (причем приближенно) только в частном случае равномерного распределения большой таблицы по маленьким а и б (зато дёшево :)
andrey_anonymous
Дата: 25.11.2009 16:14:01
Игаев
автор
select count(distinct Id||IdC)  from links

вот так получилось ....



with links as (select 91 Id, 1 IdC
from dual union all select 9,11 from dual)
select count(distinct Id||IdC) 
from links