sql查询显示最受欢迎的记录

时间:2012-04-21 10:38:21

标签: sql oracle

我有四张桌子

  1. 汽车car_ registration_no, class, type_code
  2. Rental_history rent_date, car_registration_no, rent_location_code, return_location_code
  3. 输入type_code, make, model
  4. 位置location_code, branch_name
  5. 我需要一个查询来显示按地点租借的最受欢迎的汽车。 我需要一个查询来显示上个月每个位置的总租金?

    到目前为止我的代码如下,但我无法完成它:

    SELECT car.class, car.type_code , type.make, type.model 
      FROM car , type, rental_history 
     where rental_history.car_registration_no = car.car_registration_no 
       and car.type_code = type.type_code
    

2 个答案:

答案 0 :(得分:4)

您需要加入表并计算数字。让我们从更简单的查询开始,为您指明正确的方向。

这将显示每个位置租用“type_code”汽车的次数(未经测试,可能包含错误)

SELECT
    count(car.car_registration_no) as rental_num,
    car.type_code,
    rental_history.rent_location_code
FROM car
LEFT JOIN rental_history ON (rental_history.car_registration_no = car.car_registration_no)
GROUP BY car.type_code, rental_history.rent_location_code;

我在这里使用左连接,因为可能有没有租用的车并且没有任何历史记录。而不是没有出现,租金数量为“0”。

修改

对于第二个查询,它实际上非常简单。您需要按位置分组,过滤日期并使用COUNT(再次,未经测试):

SELECT
    count(rental_history.car_registration_no) as rental_num,
    rental_history.rent_location_code
FROM rental_history
WHERE rent_date >= '2012-03-01' AND rent_date < '2012-04-01'
GROUP BY rental_history.rent_location_code;

答案 1 :(得分:0)

加入所有表并使用计数..!