我有一张表users
:
user_id site event date
---------------------------------
ITB001 A open 01-15
ITB001 A open 02-15
ITB001 A close 03-15
ITB001 B open 02-15
ITB001 B open 01-15
MKB114 A open 04-15
MKB114 A close 05-15
我希望得到小组。
仅当组具有event = close和date = 03-15的行时,此示例此表
user_id site sum_event
---------------------------
ITB001 A 3
有一种简单的方法可以获得这个吗?没有大字符串查询?
哪个查询非常快?
答案 0 :(得分:1)
SELECT
U1.user_id,
U1.site,
COUNT(*)
FROM
Users U1
WHERE
EXISTS (
SELECT *
FROM Users U2
WHERE
U2.user_id = U1.user_id AND
U2.site = U1.site AND
U2.[date] = '03-15'
)
GROUP BY
U1.user_id,
U1.site
答案 1 :(得分:1)
这是一个带有having
子句的非常基本的聚合查询。这是一种方法:
select user_id, site, count(*)
from users u
group by user_id site
having sum(case when event = 'close' and date = '03-15' then 1 else 0 end) > 0;