Я столкнулся с другой проблемой с запросами SQL в базе данных Oracle, которую я не могу решить. У меня есть 3 таблицы, две из которых собирают информацию о некоторых пользователях и структурах, а другая - сбор заявок на конструкцию. Благодаря запросу я смогу отобразить имя пользователя, который сделал максимальное количество бронирований для сооружения в определенном городе , в данном случае «Torre annunziata».
Для этого я создал запрос, цель которого - отобразить таблицу, в которой для каждого пользователя показано количество заказов, которые он сделал для ранее упомянутой структуры.
SELECT P.UTENTE, COUNT(Case when S.Citta = 'Torre Annunziata' then 1 else null end) as cnt
FROM PRENOTAZIONI P JOIN STRUTTURE S ON P.STRUTTURA = S.CODICE JOIN UTENTI ON P.UTENTE = UTENTI.CF
GROUP BY P.UTENTE;
Это дает желаемый результат: table1
Теперь я попробовал следующее:
SELECT UTENTI.NOME, UTENTI.COGNOME, MAX(cnt)
FROM UTENTI JOIN ( SELECT P.UTENTE, COUNT(Case when S.Citta = 'Torre Annunziata' then 1 else null end) as cnt
FROM PRENOTAZIONI P JOIN STRUTTURE S ON P.STRUTTURA = S.CODICE JOIN UTENTI ON P.UTENTE = UTENTI.CF
GROUP BY P.UTENTE) L ON UTENTI.CF = L.UTENTE
GROUP BY UTENTI.COGNOME, UTENTI.NOME;
Но это возвращает тот же результат предыдущего запроса (с именами каждого человека).
Исходя из моего запроса, я ожидаю получить имя и фамилию пользователя 0000000002, возможно, без отображения максимального значения.
Я знаю, что функция MAX возвращает значение для каждого пользователя, и поэтому я искал альтернативы для oracle, но не могу найти решение, которое можно применить к моей проблеме. Я надеюсь, что кто-то сможет мне помочь.
Заранее спасибо и извините за мой плохой английский.