Mysql 统计间隔内选定列中具有相同值的记录数
我试图确定在15分钟内是否有超过5封相同主题和电子邮件发送 我目前有如下疑问:Mysql 统计间隔内选定列中具有相同值的记录数,mysql,Mysql,我试图确定在15分钟内是否有超过5封相同主题和电子邮件发送 我目前有如下疑问: SELECT frommail, SUBJECT, message, count(*) AS count FROM compose GROUP BY frommail, SUBJECT, message; 但这将返回该表中所有相同记录的计数,但如果计数在任何15分钟间隔内大于5,则需要有一个条件 表结构: CREATE TABLE `compose`
SELECT
frommail,
SUBJECT,
message,
count(*) AS count
FROM
compose
GROUP BY
frommail,
SUBJECT,
message;
但这将返回该表中所有相同记录的计数,但如果计数在任何15分钟间隔内大于5,则需要有一个条件
表结构:
CREATE TABLE `compose` (
`id` int(50) NOT NULL AUTO_INCREMENT,
`email` varchar(1000) DEFAULT NULL,
`cc` varchar(1000) DEFAULT NULL,
`bcc` varchar(1000) DEFAULT NULL,
`subject` varchar(1000) DEFAULT NULL,
`message` varchar(1000) DEFAULT NULL,
`files` blob,
`frommail` varchar(1000) DEFAULT NULL,
`attached` varchar(30) DEFAULT 'no',
`vstatus` varchar(30) DEFAULT 'new',
`rstatus` varchar(30) DEFAULT 'no',
`mstatus` varchar(39) DEFAULT 'inbox',
`port` int(10) NOT null,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
创建表“撰写”(
`id`int(50)非空自动增量,
`email`varchar(1000)默认为空,
`cc`varchar(1000)默认为空,
`bcc`varchar(1000)默认为空,
`subject`varchar(1000)默认为空,
`消息'varchar(1000)默认为空,
`文件“blob”,
`frommail`varchar(1000)默认为空,
`附件“varchar(30)默认值”否,
`vstatus`varchar(30)默认值'new',
`rstatus`varchar(30)默认值'no',
`mstatus`varchar(39)默认为“收件箱”,
`端口`int(10)不为空,
`日期`时间戳不为空默认当前时间戳,
主键(`id`)
)ENGINE=InnoDB默认字符集=1;
样本数据:
id email cc bc subject message files frommail attached vstatus rstatus mstatus port date
24 abc Normal mail Hello rohan no new no inbox 8080 2016-02-22 19:58:20
25 abc Normal mail Hello rohan no new no inbox 8080 2016-02-22 19:58:20
26 abc Normal mail Hello rohan no new no inbox 8080 2016-02-22 20:23:13
27 abc Normal mail Hello rohan no new no inbox 8080 2016-02-22 20:23:13
28 abc Normal mail Hello rohan no new no inbox 8080 2016-02-22 20:23:13
29 abc Normal mail Hello rohan no new no inbox 8080 2016-02-22 20:23:13
30 abc Normal mail Hello rohan no new no inbox 8080 2016-02-22 20:23:13
31 abc Normal mail Hello rohan no new no inbox 7070 2016-02-22 20:34:21
32 abc Normal mail Hello rohan no new no inbox 7075 2016-02-22 20:34:21
33 abc Normal mail Hello rohan no new no inbox 7080 2016-02-22 20:34:21
34 abc Normal mail Hello rohan no new no inbox 8080 2016-02-22 20:34:21
35 abc Normal mail Hello rohan no new no inbox 7070 2016-02-22 20:34:21
id电子邮件cc bc主题邮件文件来自邮件附加的vstatus rstatus mstatus端口日期
24 abc普通邮件你好rohan无新邮箱8080 2016-02-22 19:58:20
25 abc普通邮件你好rohan无新邮箱8080 2016-02-22 19:58:20
26 abc普通邮件你好rohan无新邮箱8080 2016-02-22 20:23:13
27 abc普通邮件你好rohan无新邮箱8080 2016-02-22 20:23:13
28 abc普通邮件你好rohan无新邮箱8080 2016-02-22 20:23:13
29 abc普通邮件你好rohan无新邮箱8080 2016-02-22 20:23:13
30 abc普通邮件你好rohan无新邮箱8080 2016-02-22 20:23:13
31 abc普通邮件你好rohan无新邮箱7070 2016-02-22 20:34:21
32 abc普通邮件你好rohan无新邮箱7075 2016-02-22 20:34:21
33 abc普通邮件你好rohan无新邮箱7080 2016-02-22 20:34:21
34 abc普通邮件你好rohan无新邮箱8080 2016-02-22 20:34:21
35 abc普通邮件你好rohan无新邮箱7070 2016-02-22 20:34:21
我确实有插入时间戳作为日期
如有任何建议,将不胜感激。谢谢。试试这个伙伴:
Select count(e1.id),
frommail,
SUBJECT,
message
from email e1
left join email e2
on e1.date>date_add(e2.date,interval 15 minute)
having count(*)>5
基本上,它会将表格与自身进行比较,并显示它是否有超过15分钟的记录与其他记录。你能分享表格结构和一些样本数据吗?基本上,我想找到的是,在任何15分钟内是否发送了5次或更多的电子邮件。@rohan你能标记答案吗?请,我想要更多的分数。很高兴它起作用了。