如何在mysql中获取group of的总和

时间:2012-09-02 17:04:17

标签: mysql sql aggregate-functions

我有以下表格:

风扇

id, id_page, number_of_fans, created_at

此表有许多相同的id_page,但在created_at

中有所不同

网页

id, id_facebook, id_keyword, is_processed (0/1)

关键字

id, keyword, category

我正在尝试/尝试子查询,但我没有得到我想要的结果,有时候查询因为它的复杂性而非常慢。

我希望结果:

  1. 我将获取最新的(created_at) - (每页仅从表fans返回1行) - number_of_fans逐页fans并得到总和按number_of_fans
  2. 分组的所有keyword
  3. 我将按keyword
  4. 获取所有页面组
  5. 我会在keyword is_processed = 1
  6. 之前获取所有页面组

    如何在MySQL中只将1个查询的结果与1,2,3结合起来?

    谢谢。

    此致 bhadz

1 个答案:

答案 0 :(得分:0)

您正在寻找Fans表中的groupwise maximum:可以通过逐页分组并选择最大created_at值找到它,然后将其连接回Fans表以获取该最大记录中的其他列:

SELECT   Keyword.keyword,
         SUM(Fans.number_of_fans) fans_of_all_pages,
         SUM(IF(Page.is_processed,Fans.number_of_fans,0)) fans_of_processed_pages
FROM     Fans NATURAL JOIN (
           SELECT   id_page, MAX(created_at) AS created_at
           FROM     Fans
           GROUP BY id_page
         ) t
    JOIN Page    ON    Page.id = Fans.id_page
    JOIN Keyword ON Keyword.id = Page.id_keyword
GROUP BY Keyword.id