2015-04-27 4 views
0

У меня есть таблица следующимMySQL - SUM строк за исключением дубликатов

+----+---------+-------------+--------+ 
| id | user_id | ip_address | amount | 
+----+---------+-------------+--------+ 
| 1 |  2 | 192.168.1.1 | 0.5 | 
| 2 |  2 | 192.168.1.1 | 0.5 | 
| 3 |  2 | 192.168.1.2 | 0.5 | 
| 4 |  2 | 192.168.1.3 | 0.5 | 
+----+---------+-------------+--------+ 

Я хочу, чтобы только уникальный ip_address SUM от суммы и сосчитать дубликаты, как только 1.

Из приведенной выше таблицы существует 4 строки из которых первые 2 IP-адреса такие же, но я хочу считать его только одним.

Я пытаюсь использовать сумму суммы в этом поле.

SELECT SUM(amount) AS total_amount FROM table 

Я получаю 2 как выход.

Но я хочу 1.5 как выход, не могли бы вы помочь мне в решении этой проблемы.

+0

Для того же IP будет ли такое же количество? – Beginner

+0

@Beginner да сумма будет такой же –

+0

@axiac it wont work –

ответ

2

Лучший подход к агрегации с помощью IP-адреса, а затем повторно агрегатный:

SELECT SUM(amount) AS total_amount 
FROM (SELECT ip_address, MAX(amount) as amount 
     FROM table 
     GROUP BY ip_address 
    ) t 
+0

Спасибо, отлично работаю :) –

0

То же самое может быть достигнуто за счет использования DISTINCT, а также. Это немного быстрее по сравнению с GROUPBY условии, что вы не имеете индексации на ipaddr поле

проверку этого ссылка- What's faster, SELECT DISTINCT or GROUP BY in MySQL?

SELECT SUM(amt) FROM (SELECT DISTINCT ipaddr,amt FROM ipaddr_sum) t 

enter image description here enter image description here

Теперь выше разница была только за 4 ряда. Представьте себе, если таблица имеет lakhs строк, это определенно было бы полезно (ПРИМЕЧАНИЕ: Если вы не указали индексирование в поле ipaddr)

+0

Связанный ответ устарел. Я не хочу, чтобы вы построили сценарий, в котором DISTINCT превосходит GROUP BY. – Strawberry

+0

Посмотрите на изображения ... разница была всего за 4 строки, это значило бы много, если бы работало для лакхов строк – Abhinav

+0

Нет, это не так! – Strawberry

Смежные вопросы