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.
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!
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.
Mais si je rajoute un Max, le résultat du champ BIC_NAME est AFL et c'est ça que je ne comprend pas.
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 ?
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.
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.
Partager