Liste des types d’abonnements

 select subscrip_type as "Type abonnement", desc_1 as Libellé, access_branch as Localisations
from ci_dt_sub_type
order by 1 

Problème : les localisations ne sont pas forcément dans l’ordre alphabétique. Pour pouvoir les trier, je passe par une table temporaire (mais peut-être y a-t-il une solution plus simple ?) : je sépare le contenu du champ via la fonction regexp_split_to_array puis je dispatche les éléments de l’array dans des lignes différentes via la fonction unnest ; je peux ensuite les réagréger dans l’ordre avec array_agg :

drop table if exists tmp1 ;
create temporary table tmp1 as
(
	select subscrip_type as type_abonnement, desc_1 as libelle, unnest(regexp_split_to_array(access_branch, '\s{1,30}')) as localisations
	from ci_dt_sub_type
	order by 1
) ;
delete from tmp1 where localisations = '' ;
select type_abonnement, libelle, array_agg(localisations order by localisations) as localisations
from tmp1
group by 1, 2
order by 1, 2 ;

Maximums des types de regroupement par groupe documentaire

select registration_type as "Type abonnement", category_group_type as "Type regroupement", description as Libellé, max_loan as "Nb prêts", max_loan_renewal as "Nb prolongations", max_hold as "Nb réservations"
from ci_doc_category_group_type as t1
inner join sy_dt_description as t2 on t1.desc_id = t2.desc_id
where t2.lang = 'FR'
order by 1

Liste des types de regroupement

select registration_type as "Type abonnement", category_group_type as "Type regroupement", category_group as "Groupe documentaire", max_loan as "Nb prêts", max_loan_renewal as "Nb prolongations", max_hold as "Nb réservations"
from ci_doc_category_group
order by 1

Liste des groupes documentaires

select category_group as "Groupe documentaire", description as Libellé, t1.desc_id
from ci_doc_category_group_list as t1
inner join sy_dt_description as t2 on t1.desc_id = t2.desc_id
where t2.lang = 'FR' order by 1

Liste des catégories documentaires de chaque groupe documentaire

select category_group as "Groupe documentaire", array_agg(category_code order by category_code) as "Catégories documentaires"
from ci_group_doc_categories
group by 1
order by 1 

Liste des groupes documentaires avec catégories documentaires associées

select t1.category_group as "Groupe documentaire", description as Libellé, array_agg(t1.category_code order by category_code) as "Catégories documentaires"
from ci_group_doc_categories as t1
inner join ci_doc_category_group_list as t2 on t1.category_group = t2.category_group
inner join sy_dt_description as t3 on t2.desc_id = t3.desc_id
where t3.lang = 'FR'
group by 1, 2
order by 1 

Catégories documentaires dans aucun groupe documentaire

select distinct category_code , description
from ca_dt_category as t1
inner join sy_dt_description as t2 on t1.desc_id = t2.desc_id
where t2.lang = 'FR' and category_code not in
(
select distinct category_code
from ci_group_doc_categories
order by 1
)
order by 1

Catégories documentaires dans plusieurs groupes documentaires

select category_code as "Catégories documentaires", array_agg(category_group order by category_group) as "Groupes documentaires"
from ci_group_doc_categories
group by 1
having count(*) > 1
order by 1
Publicités