Как подсчитать кол-во уникальных записей?

Есть таблица
CREATE TABLE `example` (
	`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
	`cid` BIGINT(20) NOT NULL,
	`date_time` DATETIME NOT NULL,
	PRIMARY KEY (`id`),
)

Задача - выбрать записи с определённой даты и подсчитать сколько из них уникальны (для всей таблицы) по cid.

Нашёл способ такой:
SELECT COUNT(DISTINCT сid)
FROM example
WHERE date_time > '2015-10-01 00:00:00'

но он считает уникальные записи только в выборке.

Как быть?
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
@Noxy
увлекаюсь SQL
не совсем понятна задача, но

SELECT t.cid, t.date_time, t2.cnt   
FROM example t
LEFT JOIN 
     (SELECT cid, COUNT(id) as cnt FROM example GROUP BY cid)  t2 ON  (t2.cid = t.cid)
WHERE date_time > '2015-10-01 00:00:00'
-- and t2.cnt = 1   -- только уникальные
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT COUNT(*)
    FROM `example`
    GROUP BY `cid`
    HAVING MIN(`date_time`) > '2015-10-01 00:00:00'
        AND COUNT(`cid`) = 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы