SQL从分组数据中添加示例
您好,我有一个关于oracle SQL的小问题。 我有桌上汽车配件:SQL从分组数据中添加示例,sql,database,oracle,Sql,Database,Oracle,您好,我有一个关于oracle SQL的小问题。 我有桌上汽车配件: Category,Manufacturer_id,Part_name Tires,Michelin, Pilot Pro Tires,Michelin, Power One Tires,Bridgestone, Potenza Tires,Bridgestone, Turanza Tires,Bridgestone, Blizzak 查询: select Category,Manufacturer_id,count(*) c
Category,Manufacturer_id,Part_name
Tires,Michelin, Pilot Pro
Tires,Michelin, Power One
Tires,Bridgestone, Potenza
Tires,Bridgestone, Turanza
Tires,Bridgestone, Blizzak
查询:
select Category,Manufacturer_id,count(*) cnt,example_1,example_2,example_3
from auto_parts
group by Category,Manufacturer_id
结果:
Category,Manufacturer_id,cnt ,example_1,example_2,example_3
Tires ,Michelin ,1000 ,Pilot Pro,Power One,Power Two
Tires ,Bridgestone ,200 ,Potenza ,Turanza ,Blizzak
问题:如何从上表中获取3个任意值并在查询中显示为3列(上面显示了一个示例输出,列为示例_1,2,3)这应该可以解决问题。显然,您不需要WITH块,我只是用它来模拟您的数据,因此您的查询将从“选择类别…”开始
with auto_parts as
(
select 'Tires' as Category,'Michelin' as Manufacturer_id, 'Pilot Pro' as part_name from dual union all
select 'Tires' as Category,'Michelin' as Manufacturer_id, 'Power One' as part_name from dual union all
select 'Tires' as Category,'Bridgestone' as Manufacturer_id, 'Potenza' as part_name from dual union all
select 'Tires' as Category,'Bridgestone' as Manufacturer_id, 'Turanza' as part_name from dual union all
select 'Tires' as Category,'Bridgestone' as Manufacturer_id, 'Blizzak' as part_name from dual
)
select
Category
Manufacturer_id,
count(*) cnt ,
max(case when rn = 1 then part_name end) example_1,
max(case when rn = 2 then part_name end) example_2,
max(case when rn = 3 then part_name end) example_3
from (
select category, manufacturer_id, part_name, row_number() over (partition by category, manufacturer_id order by dbms_random.value) rn
from auto_parts
)
group by Category,Manufacturer_id;