1

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
4

3 に答える 3

3

1 つのオプション: サブクエリを使用します。

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

これは機能する可能性があり、見た目よりも合理的です。

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 に答える
0

サブクエリから合計ヒット数を列として選択するサブクエリを実行しない限り、これを 2 つのクエリとして実行する必要があります。

于 2013-03-21T20:57:27.920 に答える