count(DISTINCT last.messageId)
FROM log
LEFT JOIN
(
SELECT messageId
FROM log
WHERE typeId = 5
GROUP BY messageId
) AS last USING (messageId)
WHERE typeId = 1
GROUP BY isp;
Помогите с запросом.
last.messageId может быть NULL, и DISTINCT посчитает его как отдельную запись, как не считать?
Where last.messageId is not null
count null не считает (неважно distinct там или нет)
Это так же уберет значения из log.messageId
какой-то неудачный пример, не понимаю к чему он
count (что-то) -- считает КОЛ-ВО СТРОК!!! где что-то не null.
Значит я что-то не понимаю( Для messageId = 2, нету записи в last как выходит что там 1
join в КХ не продьюсит null по дефолту
выведи message_id. Думаю, тебе не надо группировать по тому полю по которому считаешь каунт
А как тогда лучше обойтись в таком случае? SELECT isp, count(DISTINCT log.messageId), -- if typeId = 1 count(DISTINCT log.messageId), -- if typeId = 5 FROM log GROUP BY isp; Можно как-то условие на count поставить чтобы посчитать уникальные записи для каждого typeId?
countIf(distinct log.messageId, log.messageId=1)
Обсуждают сегодня