mysql - SQL,在 SQL 行中查找 "Paths"(分组依据/区别)?

标签 mysql sql select distinct

希望有人可以帮助我解决这个 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/

相关文章:

php - 在 mysql 查询中使用 UNIX_TIMESTAMP() 更新列

mysql - 跨多个表求和值

java - 如何在java中制作上一个按钮来显示数据?

sql - 如何在 Oracle 合并更新中有条件设置 X=Y?

MySQL - 查询性能问题 - 花费 25 秒以上

css - 如何更改文本字段中箭头的颜色从material-ui中选择

mysql - VB.NET 和 MySQL 查询

php - 从多个表中抓取信息

MySQL select 语句删除 WHERE 子句中的空格

php - 从多个子表中选择