Вы можете сделать это с помощью аналитических запросов .Но будь осторожен.Шаблон обычно работает с вложенными подзапросами.(Один для создания набора данных, следующий для добавления его к шаблону, третий для выбора нужных строк.)
В этом случае он должен выглядеть примерно так.запрос.
SELECT T.USER, COUNT(T.USER) AS QUANTITY, T.COMPANY
FROM TICKET T
JOIN COMPANY P
ON P.COMPANY = T.COMPANY
GROUP BY (T.USER, T.COMPANY)
Аналитический запрос.(Обратите внимание, что s
является именем подзапроса. Я не использовал DB2, но стандарт строго не запрещает их отбрасывать, и я знаю по крайней мере одну базу данных, которая требует их.)
Окончательный результат.
SELECT user, quantity, company
FROM ( ... previous query ... ) t
WHERE r = 1
Объединенный запрос:
SELECT user, quantity, company
FROM (
SELECT user, quantity, company
, RANK () OVER (PARTITION BY company ORDER BY quantity DESC) as r
FROM (
SELECT T.USER, COUNT(T.USER) AS QUANTITY, T.COMPANY
FROM TICKET T
JOIN COMPANY P
ON P.COMPANY = T.COMPANY
GROUP BY (T.USER, T.COMPANY)
) s
) t
WHERE r = 1
Как я уже говорил, я не использовал DB2.Но в соответствии со стандартом SQL этот запрос должен работать.