mysql - 汇总不同组的每个 ID 的结果
问题描述
我希望ID
为每个domain
.
我们的想法是获取T/F
三种actions
类型(在一列中)的布尔值 ( ),并将它们放在一行中ID
。
domain
但是,需要对列中的每个结果进行分组URL
。
现在,我可以使用CASE WHEN
条件来获取T/F
值,但是,我不会在一行中得到我的结果......
要获得我认为可以使用的域SUBSTRING
。
初始表:
+----+----------+----------------+
| ID | Action | URL |
+----+----------+----------------+
| 1 | Click | www.google.com |
+----+----------+----------------+
| 1 | Hover | www.google.com |
+----+----------+----------------+
| 1 | Download | www.reddit.com |
+----+----------+----------------+
期望的输出:
+----+-------+-------+----------+------------+
| ID | Click | Hover | Download | Domain |
+----+-------+-------+----------+------------+
| 1 | T | T | F | google.com |
+----+-------+-------+----------+------------+
| 1 | F | F | T | reddit.com |
+----+-------+-------+----------+------------+
解决方案
使用条件聚合:
SELECT
id,
MAX(CASE WHEN action = 'Click' THEN 'T' ELSE 'F' END) click,
MAX(CASE WHEN action = 'Hover' THEN 'T' ELSE 'F' END) hover,
MAX(CASE WHEN action = 'Download' THEN 'T' ELSE 'F' END) download,
SUBSTR(url, 5) domain
FROM mytable
GROUP BY id, SUBSTR(url, 5)
要生成域名,您可以简单地从 url 中删除前 4 个字符(因此假设所有 url 都以 开头'www.'
)。
DB Fiddle上的这个演示与您的示例数据返回:
| id | click | hover | download | domain |
| --- | ----- | ----- | -------- | ---------- |
| 1 | T | T | F | google.com |
| 1 | F | F | T | reddit.com |
推荐阅读
- linux - 从每行 CSV 文件中的几个单元格中替换部分 url
- user-interface - 长动作正在锁定渲染器进程
- c - 使用 Switch Case 缩短重复代码
- jmeter - JMETER 中的随机启动时间?
- c# - 如何解决 Windows 服务中 zkemkeeper.dll 实时事件的问题?
- wpf - 在 wpf 中仅使用 xaml 代码创建数字时钟
- python-3.x - Jenkins 管道:运行 python 脚本
- php - 如何根据 PHP 中数组上的邻居特定键创建数组
- spring - 如何处理 Quartz Scheduler 中的失火触发器?
- wordpress - 当自定义字段中有多个值时如何编写wordpress查询