获取列总数和GROUP BY总计

时间:2013-03-21 20:54:24

标签: mysql sql join group-by aggregate-functions

在SQL中,我希望从每个用户获得%的网站点击量。为此,我需要获取列site hits的总和,但我的查询在另一列上使用GROUP By。

除了GROUP BY中的每个user_id之外,如何获得整个列的总和?

数据集:

User    Page Hits    Page
----    ---------    ----
a       10           home
a       10           profile
b       8            home
b       2            profile
c       6            home
c       4            profile

结果:

User     Site Hits      pct of total site hits
----     ---------      ---------------
a        20             50%
b        10             25%
c        10             25%

查询:

SELECT
user,
SUM(page_hits) AS site_hits,
SUM(page_hits) / total_page_hits <-- How do I get sum of 'page hits' for total_page_hits ????
FROM hit_data
GROUP BY user

3 个答案:

答案 0 :(得分:3)

一个选项:使用子查询。

SELECT
user,
SUM(page_hits) AS site_hits,
SUM(page_hits) / (select sum(page_hits) from hit_data) 
FROM hit_data
GROUP BY user

答案 1 :(得分:0)

除非你做一个子查询,你从子查询中选择总命中作为一列,你需要做两个查询。

答案 2 :(得分:0)

这可能有用,而且比看起来更合理:

SELECT user, SUM(page_hits) AS site_hits,
       SUM(page_hits) / (select sum(page_hits) from hit_data)
FROM hit_data
GROUP BY user

由于子查询与记录无关,因此数据库引擎可以先运行子查询,然后在外部查询中将其用作常量。