выберите максимальное значение для каждого carID - PullRequest
0 голосов
/ 27 апреля 2018

Я получил три столбца (carID, clientID, numClients). Первый идентифицирует клиента, второй идентифицирует автомобиль, а третий показывает, сколько раз каждый клиент арендовал автомобиль.

Мне нужно получить максимальное значение numClients для каждого carID.

Я сделал это:

SELECT carID, clientID,
       COUNT(*) AS numClients
    FROM RENT R
    JOIN DETAILS_OF_RENT D ON d.rentID = r.ID
GROUP BY carID, clientID
ORDER BY carID, clientID;

Итак, таблица, которую я получаю, выглядит примерно так:

+---------+----------+------------+
|  carID  | clientID | numClients |
+---------+----------+------------+
| 0765BBC | C02      |          1 |
| 0765BBC | C05      |          1 |
| 0765BBC | C07      |          1 |
| 0765BBC | C13      |          1 |
| 0765BBC | C14      |          1 |
| 1234XQP | C01      |          1 |
| 1234XPQ | C02      |          1 |
| 1234XPQ | C07      |          1 |
| 1234XPQ | C09      |          2 |
| 1234XPQ | C11      |          1 |
| 1523BBD | c07      |          1 |
| 1523BBD | c09      |          2 |
+---------+----------+------------+

Мой вывод должен быть 0765BBC и 1523BBD, так как они арендуются одним и тем же клиентом 2 раза.

Итак, мне нужно получить идентификаторы автомобилей, которые были арендованы одним и тем же клиентом несколько раз, но я не знаю, как выбрать эти строки из таблицы выше

1 Ответ

0 голосов
/ 27 апреля 2018

Вы, кажется, хотите что-то вроде этого:

SELECT rd.*
FROM (SELECT rd.*, DENSE_RANK() OVER (ORDER BY client_cnt DESC) as seqnum
      FROM (SELECT carID, clientID, COUNT(*) OVER (PARTITION BY clientId) as client_cnt
            FROM RENT R JOIN
                 DETAILS_OF_RENT D
                 ON d.rentID = r.ID
           ) rd
      ) rd
WHERE seqnum = 1;

Я не думаю, что агрегация необходима. Самый внутренний подзапрос добавляет столбец, в котором указано общее количество автомобилей для каждого клиента. Средний подзапрос добавляет столбец, который идентифицирует самые большие значения. Внешний запрос затем выбирает самые большие значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...