Использование Group By в MYSQL при использовании отлично для другого столбца - PullRequest
0 голосов
/ 07 сентября 2011

У меня есть таблица, в которой хранятся все клики, которые я отправляю на другие сайты.Он содержит идентификатор веб-сайта, на который я отправляю клик, дату и время клика, IP-адреса клика и регион, из которого этот IP-адрес (IE: США, Канада, Великобритания и т. Д.)

Когда я пытаюсь увидеть, сколько кликов я отправил на веб-сайт из каждого региона за день, я использую запрос примерно так ...

SELECT  `clicks_region`, COUNT(*) as TOTAL 
FROM `clicks` 
WHERE `clicks_to_websites_id` = '1' 
AND DATE(`clicks_date`) = DATE('2011-08-30' )
GROUP BY `clicks_region`

Теперь я хочу сделать тот же запрос, но ограничить егопоэтому IP будет считаться только один раз в день

Моей первой мыслью было сделать что-то вроде этого ...

 SELECT  `clicks_region`, COUNT(*) as TOTAL 
 FROM `clicks` 
 WHERE `clicks_to_websites_id` = '1' 
 AND DATE(`clicks_date`) = DATE('2011-08-30' )
 GROUP BY `clicks_region`
 HAVING DISTINCT(`clicks_ip`)

Но очевидно, что синтаксис не работает.

Мне не удалось найти решение в моем исследовании.Я начинаю думать, что подзапрос может быть ответом - если у кого-то есть предложения или советы, это будет высоко оценено.

Спасибо

1 Ответ

1 голос
/ 07 сентября 2011

Если я вас правильно понимаю, я думаю, вы хотите что-то вроде этого:

SELECT  `clicks_region`, COUNT(*) as TOTAL 
 FROM 
    (SELECT DISTINCT 'clicks_region', 'clicks_ip' 
     FROM 'clicks'
     WHERE `clicks_to_websites_id` = '1' 
     AND DATE(`clicks_date`) = DATE('2011-08-30' )) x
 GROUP BY `clicks_region`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...