首页 > 解决方案 > 获取用户的名字、城市和当月乘坐的次数

问题描述

拼车模式 在此处输入图像描述

为了显示用户的姓名和城市以及他们在 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;

标签: sqloracle

解决方案


如果您想要 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 的情况下聚合用户的名字是可疑的,因为它结合了多个具有相同名称的用户。我想这是查询的意图,这对我来说似乎很尴尬。


推荐阅读