2013-06-28 10 views
5

Mam tabeli o nazwie e-mail z trzema kolumnami powiedzieć id, emailFrom, emailToliczyć najwyżej nie rozmowy między dwoma klientami

 
-------------------------------------------------- 
| id | emailFrom  | EmailT0    | 
-------------------------------------------------- 
| 1 | A    | B      | 
-------------------------------------------------- 
| 2 | B    | A      | 
-------------------------------------------------- 
| 3 | A    | B      | 
-------------------------------------------------- 
| 4 | C    | A      | 
-------------------------------------------------- 
| 5 | B    | C      | 
-------------------------------------------------- 
| 6 | A    | C      | 
-------------------------------------------------- 
| 7 | A    | B      | 
-------------------------------------------------- 

teraz moje pytanie, w jaki sposób dowiedzieć się najwyższą rozmowę pomiędzy dwoma klientami

czyli wysłać wiadomość do b i b wysłać wiadomość do a, to znaczy, że mają rozmowę liczby 2. teraz,
chcę, aby znaleźć to, co użytkownicy mają Większość wysłać e-maile do siebie

Odpowiedz

5

Ten powróci użytkowników, że większość e-maili wysłanych do siebie:

SELECT 
    LEAST(emailFrom, emailTo) email1, 
    GREATEST(emailFrom, emailTo) email2, 
    COUNT(*) 
FROM 
    yourtable 
GROUP BY 
    LEAST(emailFrom, emailTo), 
    GREATEST(emailFrom, emailTo) 
ORDER BY 
    COUNT(*) DESC 
LIMIT 1 

proszę zobaczyć skrzypce here.

+0

Dzięki za pomoc, to naprawdę rozwiązać mój problem – user2531799

+0

@ user2531799 jesteś mile widziany :) nie trzeba, ale pls nie zapomnij przyjąć odpowiedzi, jeśli chcesz ... http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work tnx! – fthiella

0

Prosty COUNT (*) z GROUP BY będzie zrobić:

select emailFrom, emailTo, count(*) as conversation_count 
from email 
group by emailFrom, emailTo; 
+0

To będzie tylko liczyć wiadomości e-mail idące w jednym kierunku, a nie w obie strony. – Tom

+0

Ah błędnie przeczytał, że jest dwukierunkowy, @fthiella odpowiedział w tym przypadku;) – Timmetje

+0

To nie powie ci, co jest zadawane, już wypróbowałem to zapytanie i dopiero po tym zamieściłem tutaj moje pytanie, powyższe zapytanie zrobi podstęp ... – user2531799

Powiązane problemy