Fonctions de groupe imbriquées : Problème!
Bonjour tout le monde,
J'ai un GROS GROS souci de compréhension sur comment fonctionnent les fonctions de groupe imbriquées.
Voici mon jeu de test.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| select min(bic_name), length(bic_name) from bic_code group by length(bic_name);
MIN(BIC_NAME) LENGTH(BIC_NAME)
----------------------------------- ----------------
AFL 3
ADFA 4
ACCOR 5
360 AM 6
ABENGOA 7
AB VOLVO 8
9 TELECOM 9
2XIDEAS AG 10
2CG LIMITED 11
1818 GESTION 12
123VENTURE SA 13
2W / KALTCHUGA 14
'BANK SGB' PJSC 15
'INDUSTRIALBANK' 16
'MOSTRANSBANK' AO 17
1776 RIVERBANK LTD 18
1ST ENTERPRISE BANK 19
A-SEC OUTSOURCING AB 20
'BELAGROPROMBANK' JSC 21
'BANK RESPUBLIKA' OJSC 22
'BANK MOSCOW-MINSK' JSC 23
MIN(BIC_NAME) LENGTH(BIC_NAME)
----------------------------------- ----------------
'VERHNEVOLZHSKIY' CB OAO 24
''ANKOR BANK OF SAVINGS'' 25
1607 CAPITAL PARTNERS, LLC 26
'RADABANK' JOINT STOCK BANK 27
1492 CAPITAL MANAGEMENT, LLC 28
'VOLZHSKY UNIVERSAL BANK' OAO 29
'LATVIJAS PRIVATBANKA' JOINT-S 30
'RUBLEVSKY' COMMERCIAL BANK OOO 31
'HIMIK' OPEN JOINT-STOCK COMPANY 32
A.C.C. STAFF CREDIT UNION LIMITED 33
1ST NATIONAL BANK ST.LUCIA LIMITED 34
''GARAGUM'' BANK INTERNATIONAL JOIN 35
34 rows selected. |
Déjà, que je n'ai pas mis de Order by, et que la requête soit ordonnée sur le deuxième champ... je trouve ça bizarre bizarre :weird: mais bon, passons!
Mais si je rajoute un Max, le résultat du champ BIC_NAME est AFL et c'est ça que je ne comprend pas.
Code:
1 2 3 4 5 6
| select max(min(bic_name)) from bic_code group by length(bic_name);
MAX(MIN(BIC_NAME))
-----------------------------------
AFL
1 row selected. |
Donc, si je réfléchis, dans ma première liste, Oracle considère que AFL est le MAX parmi les MIN du champ Bic_name ?
Je me dis qu'il y a peut-être un problème avec mes paramètres de tri genre NLS et donc je fais une deuxième requête avec un Order by. Et là c'est dingue car AFL n'est ni en premier ni en dernier... donc comment peut-il me le sélectionner avec une requête MAX?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| select min(bic_name) from bic_code group by length(bic_name) order by min(bic_name);
MIN(BIC_NAME)
-----------------------------------
AB VOLVO
ABENGOA
A.C.C. STAFF CREDIT UNION LIMITED
ACCOR
ADFA
AFL
''ANKOR BANK OF SAVINGS''
A-SEC OUTSOURCING AB
'BANK MOSCOW-MINSK' JSC
'BANK RESPUBLIKA' OJSC
'BANK SGB' PJSC
'BELAGROPROMBANK' JSC
''GARAGUM'' BANK INTERNATIONAL JOIN
'HIMIK' OPEN JOINT-STOCK COMPANY
'INDUSTRIALBANK'
'LATVIJAS PRIVATBANKA' JOINT-S
'MOSTRANSBANK' AO
'RADABANK' JOINT STOCK BANK
'RUBLEVSKY' COMMERCIAL BANK OOO
'VERHNEVOLZHSKIY' CB OAO
'VOLZHSKY UNIVERSAL BANK' OAO
MIN(BIC_NAME)
-----------------------------------
1ST ENTERPRISE BANK
1ST NATIONAL BANK ST.LUCIA LIMITED
123VENTURE SA
1492 CAPITAL MANAGEMENT, LLC
1607 CAPITAL PARTNERS, LLC
1776 RIVERBANK LTD
1818 GESTION
2CG LIMITED
2W / KALTCHUGA
2XIDEAS AG
360 AM
9 TELECOM
34 rows selected. |