Нужна помощь по запросу MySQL DISTINCT + COUNT

0

У меня есть таблица под названием "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 один (без необходимости выполнять несколько запросов).

Теги:
distinct

3 ответа

1
Лучший ответ
SELECT  r.country, count(r.ip), count(DISTINCT r.ip) 
FROM `r`
GROUP BY r.country
0

Зачем вам здесь присоединиться? В быстрой n-грязной настройке того, что у вас есть в sqlite, я смог просто сделать

 SELECT country, count(ip), count(DISTINCT ip) FROM r GROUP BY country

... и я получил ожидаемые результаты.

0

Что-то вроде (полностью непроверено):

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 
  • 0
    Мне нужно общее количество IP-адресов и общее уникальное количество IPS каждой страны (никогда в мире). Проверим и попробуем ваш запрос прямо сейчас, спасибо. Обновление: похоже, ваш запрос извлекает данные, которые мне нужны, большое спасибо.
  • 0
    Да, я понял это до написания запроса, но забыл удалить текст. Я думаю, что ответ RedFilter лучше, кстати, если он работает. Я не был уверен, что вы могли бы использовать счет различных и считать в том же запросе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню