0

私はこれを約20分間いじっていますが、ここで助けが得られるかもしれません. 多対 1 の関係にある 2 つのテーブルがあります。ユーザー (1 人) とイベント (多数)。単純化された表は次のようになります。

users
-----------
user_id
group_id

events
-----------
user_id

グループごとに、少なくとも 1 つのイベントを持つユーザーの数を示すレポートを作成しようとしています。したがって、結果セットは次のようになります。

group_id   users_with_at_least_one_event
1          689
2          312
4

4 に答える 4

2
SELECT  group_id, count(*) users_with_at_least_one_event
FROM 
(
SELECT  u.user_id, u.group_id, count(*) as event_count
FROM    users u
        JOIN events e
        ON u.user_id = e.user_id
GROUP BY u.user_id, u.group_id
HAVING count(*) > 1
) sub
GROUP BY group_id
于 2012-09-27T16:55:26.977 に答える
0
SELECT users.group_id, COUNT(*) FROM users 
WHERE users.user_id IN (SELECT events.user_id FROM events)
于 2012-09-27T16:50:13.213 に答える
0
SELECT group_id, COUNT(users.user_id) AS users_with_at_least_one_event,
FROM users, events
WHERE users.user_id = events.user_id
GROUP BY group_id

多分?

于 2012-09-27T16:52:53.220 に答える
0

試す

select users.group_id, count(distinct users.user_id) as users_with_at_least_one_event
from 
users, events 
where users.user_id = events.user_id 
group by users.group_id
于 2012-09-27T16:49:41.613 に答える