sql - PostgreSQL - 如何获取按两列分组的数据?
问题描述
例如,我想计算某个 IP 和日期范围的 IP 地址数where date = 2017-12-01 and IP = '122.12.168.105'
。
我希望得到 3 列:日期、日期的 IP 计数和 IP 本身:
| the_date |count| IP |
| 2017-12-01 | 155 | 122.12.168.105 |
现在我想出了以下查询:
SELECT COUNT(ip), ip
FROM my_db.logs
GROUP BY ip
LIMIT 100;
但它只为我返回每个 IP 的计数。我如何也按日期分组?
当我尝试在SELECT
语句中添加日期时,会出现一个错误,指出 the_date 必须在GROUP_BY
子句中。但是我应该如何对 IP 进行分组呢?
解决方案
添加the_date
到分组语句中:
SELECT the_date, COUNT(1), ip
FROM my_db.logs
GROUP BY the_date, ip
LIMIT 100;
如果列名是date
(not the_date
),则必须使用双引号,因为date
它是保留字:
SELECT "date", COUNT(1), ip
FROM my_db.logs
GROUP BY "date", ip
LIMIT 100;
推荐阅读
- node.js - Mongoose post 'findOneAndUpdate' hook 'this' 是空对象
- java - 如何在 Java 中验证用户输入
- python - 如何使用 python-pptx 从幻灯片中提取图像的尺寸
- c# - 绑定 listView 以在另一个 listView 中显示与其关联的数据
- c++ - 从字符串转换的编译时检查?
- c - 在 ac 程序中获取(星号)作为输入
- ios - iOS 如何使用贝塞尔路径实现我的绘图?
- php - 为什么 Laravel 8 中的整数变形图不起作用
- c++ - static constexpr undefined reference error on clang
- vba - Access-想要在主窗体上打开主窗体的按钮