我有一个问题,我需要显示字段之和。假设我有如下记录集,
detectDate |isp |infection | count
--------------------------------------
2012-10-02 01:00|aaaa |malware |3
2012-10-02 01:30|bbbb |malware |2
2012-10-02 01:33|bbbb |spy-eye |2
2012-10-02 01:45|aaaa |DDos |1
2012-10-03 01:50|cccc |malware |2
2012-10-03 02:00|dddd |TDSS |2
2012-10-03 04:50|dddd |TDSS |3我想显示一个输出,它将显示每天所有感染的总和,如下所示,
detectDate |infection | count
-------------------------------
2012-10-02 |DDos |1
2012-10-02 |malware |5
2012-10-02 |spy-eye |2
2012-10-02 |TDSS |0
2012-10-03 |DDos |0
2012-10-03 |malware |2
2012-10-03 |spy-eye |0
2012-10-03 |TDSS |5我用了这个查询,
SELECT DATE_FORMAT( detectDate, '%Y-%m-%d' ) AS detectDate, infection, SUM( count )
FROM `tbl_correlateddata`
GROUP BY DATE_FORMAT( detectDate, '%Y-%m-%d' ) , infection但它只给出了如下输出,这是,而不是,我的要求
detectDate |infection | count
-------------------------------
2012-10-02 |DDos |1
2012-10-02 |malware |5
2012-10-02 |spy-eye |2
2012-10-03 |malware |2
2012-10-03 |TDSS |5任何帮助都会很有帮助:)非常感谢:)非常感谢:)
编辑:可能重复:MySQL Count data for last 7 days
但不是类似的
发布于 2012-11-05 04:34:46
SELECT e.*, COALESCE(SUM(d.`count`),0) `SUM of count`
FROM
(
SELECT c.detectDate, a.infection
FROM
(
SELECT DISTINCT infection
FROM tbl_correlateddata
) a CROSS JOIN
(
SELECT DISTINCT DATE(detectDate) detectDate
FROM tbl_correlateddata
) c
) e LEFT JOIN tbl_correlateddata d
ON DATE(d.detectDate) = e.detectDate AND
d.infection = e.infection
GROUP BY detectDate, infection
ORDER BY e.detectDate, e.infection或
SELECT DATE_FORMAT(e.detectDate, '%Y-%m-%d' ),
e.infection,
COALESCE(SUM(d.`count`),0) `SUM of count`
FROM
(
SELECT c.detectDate, a.infection
FROM
(
SELECT DISTINCT infection
FROM tbl_correlateddata
) a CROSS JOIN
(
SELECT DISTINCT DATE(detectDate) detectDate
FROM tbl_correlateddata
) c
) e LEFT JOIN tbl_correlateddata d
ON DATE(d.detectDate) = e.detectDate AND
d.infection = e.infection
GROUP BY e.detectDate, e.infection
ORDER BY e.detectDate, e.infectionhttps://stackoverflow.com/questions/13225902
复制相似问题