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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.