1

在 SQL 中,我想获取来自每个用户的网站点击百分比。为此,我需要获取 column 的总和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
4

3 回答 3

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
于 2013-03-21T20:56:24.760 回答
0

除非您在子查询中选择总命中数作为子查询的列,否则您需要将其作为两个查询来执行。

于 2013-03-21T20:57:27.920 回答
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

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

于 2013-03-21T20:58:19.597 回答