【问题标题】:How to sum after count the data in mysql?计算mysql中的数据后如何求和?
【发布时间】:2020-02-01 14:15:47
【问题描述】:

我有一个问题,即“neu”情绪的输出没有求和。第一个“neu”来自 tablea,而 第二个来自tableb。请帮助我。 我在mysql中有这张表:

表a

sentid  |   eventid  |  a  |   sentiment  |
-------------------------------------------
1       |    10      | yes |   pos        |
2       |    10      | so  |   neu        |
3       |    11      | me  |   neu        |
4       |    11      | luv |   pos        |
5       |    11      | so  |   neu        |

表 b

 bid    |   eventid  |  b  |   sentiment  |
-------------------------------------------
1       |    11      | hee |   pos        |
2       |    11      | yup |   neu        |
3       |    10      | so  |   neu        |
4       |    10      | ha  |   neu        |
5       |    10      | no  |   neu        |

我得到的输出

eventid  |  sentiment   | cnt |
-------------------------------
 10      |   pos        | 1   |
 10      |   neu        | 1   |  #from tablea
 10      |   neu        | 3   |  #from tableb

期望的输出

eventid  |  sentiment   | cnt |
-------------------------------
 10      |   pos        | 1   |
 10      |   neu        | 4   |  

我的代码:

select id,sentiment,count(*) as cnt from tablea WHERE id=10 group by sentiment 
union all 
select id,sentiment,count(*) as cnt from tableb WHERE id=10 group by sentiment

【问题讨论】:

    标签: mysql count sum


    【解决方案1】:

    先联合,再聚合。

    select eventid, sentiment, count(*) as cnt
    from
    (
      select eventid, sentiment from tablea
      union all
      select eventid, sentiment from tableb
    ) unioned
    group by eventid, sentiment
    order by eventid, sentiment;
    

    如果您只想为一个eventid 执行此操作,请将where eventid = 10 放在from tableafrom tableb 之后。您可以改为在 group by 之前放置一次,但这可能会更慢。

    【讨论】:

      【解决方案2】:

      你应该先联合,然后聚合:

      SELECT
          eventid,
          sentiment,
          COUNT(*) AS cnt
      FROM
      (
          SELECT eventid, sentiment FROM tablea
          UNION ALL
          SELECT eventid, sentiment FROM tableb
      ) t
      -- WHERE eventid = 10     -- optional
      GROUP BY
          eventid,
          sentiment;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-02
        • 2012-04-08
        • 2018-02-11
        相关资源
        最近更新 更多