Я пытаюсь создать представление на основе этого запроса
with fields as (
select id, data_id, value
from test
where data_id in (123, 345)
),
counted as (
SELECT id, data_id, sum(meta.count) as count
FROM fields
LEFT JOIN meta ON meta.field_id = fields.id
group by data_id, meta.field_id, value
)
SELECT id, data_id, count
FROM (
SELECT id, data_id, count,
RANK() OVER (PARTITION BY data_id ORDER BY count DESC) dest_rank
FROM counted
) t
WHERE dest_rank = 1
Однако where data_id in (123, 345)
должен быть пользовательским, поэтому я могу написать SELECT * from my_view where data_id in (123, 345)
или с помощью JOIN, например
SELECT * FROM another_table LEFT JOIN my_view ON my_view.data_id = another_table.data_id
Каков наилучший способ достичь этого?