sql - 获取用户的名字、城市和当月乘坐的次数
问题描述
为了显示用户的姓名和城市以及他们在 2020 年 12 月期间乘坐的次数。我尝试了以下代码并获得了包含乘坐次数的表格,但获得的答案未被接受。请帮帮我。
SELECT u.first_name, u.city, COUNT(r1.ride_id)
FROM user_details u, ride_users r1
WHERE u.user_id = r1.user_id
AND ride_id IN
(SELECT ride_id FROM ride WHERE to_char(start_on, 'mm') = '12')
GROUP BY u.first_name, u.city
ORDER BY u.first_name, u.city;
解决方案
如果您想要 2020-12 年的数据,我建议:
SELECT u.first_name, u.city, COUNT(*) as counter
FROM user_details u JOIN
ride_users ru
ON ru.user_id = u.user_id JOIN
ride r
ON r.ride_id = ru.ride_id
WHERE r.start_on >= DATE '2020-12-01' AND
r.start_on < DATE '2020-01-01'
GROUP BY u.first_name, u.city
ORDER BY u.first_name, u.city;
然而,这个问题询问的是当月,并且有每年改变大约 12 次的习惯。为此,我会使用这个WHERE
子句:
WHERE r.start_on >= TRUNC(sysdate, 'MON') AND
r.start_on < TRUNC(sysdate, 'MON') + INTERVAL '1' MONTH
注意:我发现在没有用户 ID 的情况下聚合用户的名字是可疑的,因为它结合了多个具有相同名称的用户。我想这是查询的意图,这对我来说似乎很尴尬。
推荐阅读
- php - 更改单个元素数组的键
- c++ - c++ 提升范围。数组中的对数组
- ios - WKWebView 无法加载某些图片
- python - Django Rest Framework ViewSet 的附加视图
- jupyter-notebook - 取消 jupyter notebook 在工具栏显示中文
- kotlin - 在文本编辑中设置文本''未找到结果''
- azure - 在 OnOpenAsync 方法中调用 GetOrAddAsync
- google-app-engine - 从 Google Plugin for Eclipse 迁移到 Cloud Tools for Eclipse
- dart - 自动调整文本大小以垂直适合容器
- swift - Swiftlint 中的“Type Body Length”到底是什么意思?