Доброе время суток. Не знаю с какой стороны подойти к выборке.
в таблице имеем поля date, ip, tag. в нее пишутся ип пользователей с целью последующего определения количества уникальных посетителей и неуникальных, сгруппированных по date и tag. tag - это нечто типа рефера. для этого я выполняю такой запрос:
SELECT `tag`, COUNT(DISTINCT ip) AS uniques, (COUNT(*) - COUNT(DISTINCT ip)) AS raws, `date` FROM `tablename` GROUP BY `tag`, `date`
если взять такой набор данных (откину пока date чтобы не загромождать визуально):
+-------------+-------------+
| ip | tag |
+-------------+-------------+
| 11.11.11.11 | 1 |
+-------------+-------------+
| 11.11.11.11 | 1 |
+-------------+-------------+
| 11.11.11.11 | 2 |
+-------------+-------------+
| 11.11.11.11 | 2 |
+-------------+-------------+
то в результате такого запроса мы получим:
+------+-------+-----+
| raws |uniques| tag |
+------+-------+-----+
| 1 | 1 | 1 |
+------+-------+-----+
| 1 | 1 | 2 |
+------+-------+-----+
это и логично, ведь внутри группы ip будет уникальным как минимум 1 раз.
но концепция требует, чтобы было так:
+------+-------+-----+
| raws |uniques| tag |
+------+-------+-----+
| 1 | 1 | 1 |
+------+-------+-----+
| 2 | 0 | 2 |
+------+-------+-----+
то есть каждый ип должен считаться уникальным только в отношении того tag, с которым он встречается впервые.
подскажите плз, какие есть способы этого добиться?