在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
答案 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
由于子查询与记录无关,因此数据库引擎可以先运行子查询,然后在外部查询中将其用作常量。