首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求字段之和

求字段之和
EN

Stack Overflow用户
提问于 2012-11-05 04:24:56
回答 1查看 121关注 0票数 3

可能重复: MySQL Count data for last 7 days

我有一个问题,我需要显示字段之和。假设我有如下记录集,

代码语言:javascript
复制
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

我想显示一个输出,它将显示每天所有感染的总和,如下所示,

代码语言:javascript
复制
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

我用了这个查询,

代码语言:javascript
复制
SELECT DATE_FORMAT( detectDate, '%Y-%m-%d' ) AS detectDate, infection, SUM( count )
FROM `tbl_correlateddata`
GROUP BY DATE_FORMAT( detectDate, '%Y-%m-%d' ) , infection

但它只给出了如下输出,这是,而不是,我的要求

代码语言:javascript
复制
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

但不是类似的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-05 04:34:46

代码语言:javascript
复制
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
  • SQLFiddle Demo

代码语言:javascript
复制
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.infection
  • SQLFiddle Demo
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13225902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档