У меня есть таблица под названием "r", внутри этой таблицы я храню идентификатор, ip и страну. Я выполняю этот запрос:
SELECT r.country, count(rr.ip), count(DISTINCT rr.ip)
FROM `r`
LEFT JOIN r rr
ON r.country = rr.country
GROUP BY r.country
Я получаю строки с столбцами: "страна", "число", "число"; Но и "counts()" не показывает, что я хочу показать (количество сырых/уникальных ips для каждой страны), и я не уверен, почему. Например, для США я вижу > 2000 уникальных ips, но у меня всего 500 записей в базе данных. Что не так с моим запросом?
То, что я хочу извлечь из db, - это список строк со столбцами: страны + подсчет raw ips + count unique ips. (подсчет, связанный с каждой страной), я имею в виду получение списка отдельных стран и подсчет ips foreach один (без необходимости выполнять несколько запросов).
SELECT r.country, count(r.ip), count(DISTINCT r.ip)
FROM `r`
GROUP BY r.country
Зачем вам здесь присоединиться? В быстрой n-грязной настройке того, что у вас есть в sqlite, я смог просто сделать
SELECT country, count(ip), count(DISTINCT ip) FROM r GROUP BY country
... и я получил ожидаемые результаты.
Что-то вроде (полностью непроверено):
SELECT
r.country,
count(r.ip),
(SELECT COUNT(DISTINCT rr.ip) from r rr where rr.country = r.country)
FROM
r r
GROUP BY
r.country