sql - GROUP BY 将日期折叠到 CSV 分隔列中
问题描述
假设我有一个如下数据集:
╔═══════╦══════════════════╦══════════════════╦═══════════════════╗
║ Count ║ Min(Time) ║ Max(Time) ║ Domain ║
╠═══════╬══════════════════╬══════════════════╬═══════════════════╣
║ 647 ║ 2021-01-06 13:08 ║ 2021-01-12 16:25 ║ mail.yahoo.com ║
║ 350 ║ 2021-01-06 13:08 ║ 2021-01-12 16:24 ║ mail.google.com ║
║ 133 ║ 2021-01-06 13:08 ║ 2021-01-12 16:28 ║ www.google.com ║
║ 27 ║ 2021-01-06 13:10 ║ 2021-01-12 15:49 ║ t.fluff.com ║
║ 22 ║ 2021-01-06 15:52 ║ 2021-01-12 15:55 ║ www.thethings.com ║
╚═══════╩══════════════════╩══════════════════╩═══════════════════╝
还有一个简单的 GROUP BY 语句,如下所示:
SELECT COUNT(DOMAIN), MIN(TIME), MAX(Time), Domain
FROM TABLE
GROUP BY DOMAIN
ORDER BY COUNT(DOMAIN) DESC
SQLLite 中是否有一种方法可以展平时间列,这样我就可以将所有时间列为从最旧到最新的 CSV 列。知道这在 SQL Server 和 Oracle 中具有 XML 路径和其他幻想是可能的,实现这一点的最简单方法是我可以针对简单的 SQLLite 数据库运行。谢谢
解决方案
您可以group_concat
按如下方式使用:
SELECT COUNT(DOMAIN), MIN(TIME), MAX(Time), Domain ,
Group_concat(time)
FROM TABLE
GROUP BY DOMAIN
ORDER BY COUNT(DOMAIN) DESC
推荐阅读
- javascript - 使用 jQuery 更改模式中的 div 类
- javascript - MongoDB 仅在数据不存在时插入数据(在 Javascript 中)
- ssl - 如何从一个 https 域重定向到另一个 https 域
- android - android 用户 vs 应用程序配置/首选项文件——我很困惑
- go - Go、GopherJS 和 vecty 版本的问题
- python - OoM:在张量流模型上使用 Talos 进行超参数优化期间出现内存不足错误
- sql - 根据特定电影及其工作连接人名
- api - 任何亚马逊 API 可用于阅读产品用户评论并按产品发布卖家回复?
- kubernetes - Kubernetes DNS 故障排除
- python - 相互堆叠的情节条