希望有人可以帮助我解决这个 mysql 示例:
hash, version, action
a1..., A, pageview
a2..., A, pageview
a2..., B, pageview
a2..., X, lead
a3..., A, pageview
a3..., B, pageview
a4..., A, pageview
a4..., X, lead
a5..., B, pageview
a6..., A, pageview
a6..., X, lead
如何用一个陈述回答以下问题?
- 列出所有具有 version = A 的行(仅!)和另一行具有 action=lead 的哈希
- 列出所有具有 version = B 的行(仅!)和另一行具有 action=lead 的哈希
- 列出所有具有版本 A 的操作的哈希,另一行具有版本 B 和具有 action=lead 的行
我尝试了如下几个语句,使用 select distinct 和 group by having,但没有成功
SELECT *, count(hash) as count
FROM it_track
GROUP BY hash, action
having count > 1
and action like 'lead';
非常感谢!
一月
最佳答案
我想你想要这样的东西:
select hash,
(case when sum(action = 'lead') and
min(version) = max(version) and
min(version) = 'A'
then 'A-only, with lead'
when sum(action = 'lead') and
min(version) = max(version) and
min(version) = 'B'
then 'B-only, with lead'
when sum(action = 'lead') and
min(version) <> max(version)
then 'Both, with lead'
else 'Unknown'
end) as which_group
from it_track
where (action = 'lead' or
( action = 'pageview' and version in ('A', 'B') )
)
group by hash
关于mysql - SQL,在 SQL 行中查找 "Paths"(分组依据/区别)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52976728/