Re,
Pour en avoir le coeur net je viens de créer une table neuve, avec initialement deux colonnes : nom, date. Au cours de la création, HSQLDB exige une colonne d'index (normal en somme). Je l'ai donc laissé faire, en modifiant juste la propriété de la colonne ID créée en la mettant en incrément automatique.
J'ai alimenté cette table avec les requêtes suivantes, une légère extension du fichier .csv initial :
INSERT INTO "absences" ("nom", "date") VALUES ('Larry', 'Le 05/09/20');
INSERT INTO "absences" ("nom", "date") VALUES ('Sarah', 'Le 07/09/20');
INSERT INTO "absences" ("nom", "date") VALUES ('Sarah', 'Le 12/09/20');
INSERT INTO "absences" ("nom", "date") VALUES ('Sarah', 'Le 18/09/20');
INSERT INTO "absences" ("nom", "date") VALUES ('Sarah', 'Le 01/10/20');
INSERT INTO "absences" ("nom", "date") VALUES ('Anna', 'Le 25/09/20');
INSERT INTO "absences" ("nom", "date") VALUES ('Anna', 'Le 27/09/20');
INSERT INTO "absences" ("nom", "date") VALUES ('Anna', 'Le 05/10/20');
INSERT INTO "absences" ("nom", "date") VALUES ('Henri', 'Le 21/09/20');
INSERT INTO "absences" ("nom", "date") VALUES ('Henri', 'Le 25/09/20');
A ce stade la table contient :
SELECT * FROM "absences"
2,Larry,Le 05/09/20,
3,Larry,Le 05/09/20,
4,Sarah,Le 07/09/20,
5,Sarah,Le 12/09/20,
6,Sarah,Le 18/09/20,
7,Sarah,Le 01/10/20,
8,Anna,Le 25/09/20,
9,Anna,Le 27/09/20,
10,Anna,Le 05/10/20,
11,Henri,Le 21/09/20,
12,Henri,Le 25/09/20,
Il y a deux "Larry" ensuite d'autres manipulations...
Manifestement, l'index doit lui plaire car j'obtiens ceci :
SELECT "nom", COUNT(*) FROM "absences" GROUP BY "nom";
Larry,2,Larry,
Sarah,4,Sarah,
Anna,3,Anna,
Henri,2,Henri,
Mais par contre, le format de sortie est incorrect, je ne vois pas pourquoi le nom est répété ni pourquoi il y a systématiquement une virgule en fin de ligne.
Si je modifie la requête ainsi :
SELECT "nom", COUNT(*) AS "cnt" FROM "absences" GROUP BY "nom";
J'obtiens ceci :
Larry,2,Larry,
Sarah,4,Sarah,
Anna,3,Anna,
Henri,2,Henri,
La renommage de la colonne COUNT(*) ne se fait pas, ce qui indique qu'il y a vraiment des trucs bizarres qui flottent dans le potage.
Bref, il semble qu'en créant une clé unique on parvienne à faire fonctionner partiellement les fonctions d'agrégation, mais franchement, je ne compterais pas trop dessus, d'autant plus si la sortie est choucroutée.
Peut-être qu'un jour, une nouvelle version, ou un autre moteur, qui sait... Moi, je m'arrête là pour ce sujet.
Ah, par contre si on veut connaître la date de la dernière absence de chaque élève, voici comment faire (ATTENTION, les DATES sont bien sûr traitées comme du TEXTE. D'où ma remarque précédente !) :
SELECT DISTINCT a."nom", a."date" FROM "absences" a WHERE a."date" = SELECT MAX(b."date") FROM "absences" b WHERE a."nom" = b."nom";
Anna,Le 27/09/20,
Henri,Le 25/09/20,
Larry,Le 05/09/20,
Sarah,Le 18/09/20,
Il y a toujours des virgules en trop, mais bon.
Bonne fin de journée,
Thierry