row_number(), order by case

Пронумеровать уникальные пары {maker, type} из Product, упорядочив их следующим образом:
– имя производителя (maker) по возрастанию;
– тип продукта (type) в порядке PC, Laptop, Printer.
Если некий производитель выпускает несколько типов продукции, то выводить его имя только в первой строке;
остальные строки для ЭТОГО производителя должны содержать пустую строку символов (”).


–num maker type
–1 A PC
–2  Laptop
–3  Printer
–4 B PC
–5  Laptop
–6 C Laptop
–7 D Printer
–8 E PC
–9  Printer

select row_number() over (order by maker) num, maker2 maker, type from

(

select maker,

maker2

=

case row_number() over (partition by maker order by CASE

WHEN type = ‘PC’ THEN 1

WHEN type = ‘Laptop’ THEN 2

WHEN type = ‘Printer’ THEN 3

ELSE 4

END)

when 1 then maker

else

end

, type

from (select distinct maker, type from product) x) y

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s