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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| DROP DATABASE;
CREATE DATABASE '..\Data\Base.fdb' page_size 4096 DEFAULT CHARACTER SET ISO8859_1;
-- =======================
-- création table "compet"
-- =======================
create table compet (
prenom char(10) not null collate fr_fr,
course char(10) not null collate fr_fr,
clagen smallint not null,
sexe char(01) not null collate fr_fr
);
-- =======================
-- insertion dans 'compet'
-- =======================
insert into compet (prenom, course, clagen, sexe) values ('Marc', 'leMans2005', 1, 'H');
insert into compet (prenom, course, clagen, sexe) values ('Jeanne', 'leMans2005', 2, 'F');
insert into compet (prenom, course, clagen, sexe) values ('Mireille', 'leMans2005', 3, 'F');
insert into compet (prenom, course, clagen, sexe) values ('Bruno', 'leMans2005', 4, 'H');
insert into compet (prenom, course, clagen, sexe) values ('Maurice', 'Monaco2006', 1, 'H');
insert into compet (prenom, course, clagen, sexe) values ('Christian', 'Monaco2006', 2, 'H');
insert into compet (prenom, course, clagen, sexe) values ('Sylvie', 'Monaco2006', 3, 'F');
insert into compet (prenom, course, clagen, sexe) values ('corinne', 'Monaco2006', 4, 'F');
insert into compet (prenom, course, clagen, sexe) values ('Bernadette', 'Monaco2006', 4, 'F');
insert into compet (prenom, course, clagen, sexe) values ('Elise', 'Monaco2006', 6, 'F');
-- ==================
-- Vidage de 'compet'
-- ==================
select * from compet;
PRENOM COURSE CLAGEN SEXE
========== ========== ======= ======
Marc leMans2005 1 H
Jeanne leMans2005 2 F
Mireille leMans2005 3 F
Bruno leMans2005 4 H
Maurice Monaco2006 1 H
Christian Monaco2006 2 H
Sylvie Monaco2006 3 F
corinne Monaco2006 4 F
Bernadette Monaco2006 4 F
Elise Monaco2006 6 F
commit;
-- ================
-- Requête avec CTE
-- ================
WITH temp AS
(SELECT prenom, course, clagen, sexe,
rank() over (partition by course, sexe order by course, clagen) as rang
FROM COMPET)
SELECT prenom, course, clagen, sexe,
CASE WHEN Sexe = 'H' THEN rang END AS clahom,
CASE WHEN Sexe = 'F' THEN rang END AS clafem
FROM temp
order by course, clagen;
PRENOM COURSE CLAGEN SEXE CLAHOM CLAFEM
========== ========== ======= ====== ===================== =====================
Marc leMans2005 1 H 1 <null>
Jeanne leMans2005 2 F <null> 1
Mireille leMans2005 3 F <null> 2
Bruno leMans2005 4 H 2 <null>
Maurice Monaco2006 1 H 1 <null>
Christian Monaco2006 2 H 2 <null>
Sylvie Monaco2006 3 F <null> 1
Bernadette Monaco2006 4 F <null> 2
corinne Monaco2006 4 F <null> 2
Elise Monaco2006 6 F <null> 4
exit;
Appuyez sur une touche pour continuer... |
Partager