5

我有一个名为 email 的表,其中包含三列 id、emailFrom、emailTo

--------------------------------------------------
| 编号 | 电子邮件发件人 | 电子邮件T0 |
--------------------------------------------------
| 1 | 一个 | 乙|
--------------------------------------------------
| 2 | 乙| 一个 |
--------------------------------------------------
| 3 | 一个 | 乙|
--------------------------------------------------
| 4 | C | 一个 |
--------------------------------------------------
| 5 | 乙| C |
--------------------------------------------------
| 6 | 一个 | C |
--------------------------------------------------
| 7 | 一个 | 乙|
--------------------------------------------------

现在我的问题是,如何找出两个客户之间的最高对话

即A向B发送邮件,B向A发送邮件,这意味着他们的对话计数为2。现在,
我想找出哪些用户彼此发送的电子邮件最多

4

2 回答 2

5

这将返回相互发送电子邮件最多的用户:

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

在此处查看小提琴。

于 2013-06-28T12:41:50.033 回答
0

带有 GROUP BY 的简单 COUNT(*) 将做到这一点:

select emailFrom, emailTo, count(*) as conversation_count
from email
group by emailFrom, emailTo;
于 2013-06-28T12:43:26.273 回答