Début test interface borne

This commit is contained in:
2023-01-04 22:07:32 +01:00
parent 66d1aaf027
commit b31ee7c0b9
39 changed files with 3354 additions and 3260 deletions

View File

@@ -1,50 +1,50 @@
/*
Dans cette requête il faut replacer DAY_COUNT_DELAY par le nombre de jours sur lequel calculer les stats, STATS_GENERAL_TABLE_NAME par la table dans laquelle mettre les stats globales (par exemple stats_general_jour si les valeurs sont calculées sur 1 jour) et pareil pour STATS_AUTRES_TABLE_NAME
C'est un peu bizzare comme technique mais j'ai pas trouvé de meilleur solution
*/
SET @date_limite = DATE_ADD(NOW(), INTERVAL -DAY_COUNT_DELAY DAY);
/*
On récupère les notes notes moyennes sur la periode, en séparant global, borne et site
*/
SELECT @moyenne_globale:=AVG(note_principale)
FROM borne_avis
WHERE borne_avis.date > @date_limite;
SELECT @moyenne_borne:=AVG(note_principale)
FROM borne_avis
JOIN sources ON sources.id = borne_avis.source_id
WHERE borne_avis.date > @date_limite AND sources.nom = "borne";
SELECT @moyenne_site:=AVG(note_principale)
FROM borne_avis
JOIN sources ON sources.id = borne_avis.source_id
WHERE borne_avis.date > @date_limite AND sources.nom = "website";
/*
On récupère la distribution de sexes
*/
SELECT @stats_f:=COUNT(*) FROM borne_avis
JOIN borne_auteurs ON borne_avis.id_auteur = borne_auteurs.id
WHERE sexe='f' AND date > @date_limite;
SELECT @stats_h:=COUNT(*) FROM borne_avis
JOIN borne_auteurs ON borne_avis.id_auteur = borne_auteurs.id
WHERE sexe='h' AND date > @date_limite;
SELECT @stats_a:=COUNT(*) FROM borne_avis
JOIN borne_auteurs ON borne_avis.id_auteur = borne_auteurs.id
WHERE sexe='a' AND date > @date_limite;
SET @dist_sexe = CONCAT(@stats_f,",",@stats_h,",",@stats_a);
INSERT INTO STATS_GENERAL_TABLE_NAME (moyenne_globale, moyenne_borne, moyenne_site, dist_sexe) VALUES (@moyenne_globale, @moyenne_borne, @moyenne_site, @dist_sexe);
INSERT INTO STATS_AUTRES_TABLE_NAME (critere_id, note)
SELECT critere_id, AVG(note) as moyenne FROM borne_notes_autre
WHERE borne_notes_autre.date > @date_limite
GROUP BY critere_id
/*
TODO : Calcul de la distribution d'age
/*
Dans cette requête il faut replacer DAY_COUNT_DELAY par le nombre de jours sur lequel calculer les stats, STATS_GENERAL_TABLE_NAME par la table dans laquelle mettre les stats globales (par exemple stats_general_jour si les valeurs sont calculées sur 1 jour) et pareil pour STATS_AUTRES_TABLE_NAME
C'est un peu bizzare comme technique mais j'ai pas trouvé de meilleur solution
*/
SET @date_limite = DATE_ADD(NOW(), INTERVAL -DAY_COUNT_DELAY DAY);
/*
On récupère les notes notes moyennes sur la periode, en séparant global, borne et site
*/
SELECT @moyenne_globale:=AVG(note_principale)
FROM borne_avis
WHERE borne_avis.date > @date_limite;
SELECT @moyenne_borne:=AVG(note_principale)
FROM borne_avis
JOIN sources ON sources.id = borne_avis.source_id
WHERE borne_avis.date > @date_limite AND sources.nom = "borne";
SELECT @moyenne_site:=AVG(note_principale)
FROM borne_avis
JOIN sources ON sources.id = borne_avis.source_id
WHERE borne_avis.date > @date_limite AND sources.nom = "website";
/*
On récupère la distribution de sexes
*/
SELECT @stats_f:=COUNT(*) FROM borne_avis
JOIN borne_auteurs ON borne_avis.id_auteur = borne_auteurs.id
WHERE sexe='f' AND date > @date_limite;
SELECT @stats_h:=COUNT(*) FROM borne_avis
JOIN borne_auteurs ON borne_avis.id_auteur = borne_auteurs.id
WHERE sexe='h' AND date > @date_limite;
SELECT @stats_a:=COUNT(*) FROM borne_avis
JOIN borne_auteurs ON borne_avis.id_auteur = borne_auteurs.id
WHERE sexe='a' AND date > @date_limite;
SET @dist_sexe = CONCAT(@stats_f,",",@stats_h,",",@stats_a);
INSERT INTO STATS_GENERAL_TABLE_NAME (moyenne_globale, moyenne_borne, moyenne_site, dist_sexe) VALUES (@moyenne_globale, @moyenne_borne, @moyenne_site, @dist_sexe);
INSERT INTO STATS_AUTRES_TABLE_NAME (critere_id, note)
SELECT critere_id, AVG(note) as moyenne FROM borne_notes_autre
WHERE borne_notes_autre.date > @date_limite
GROUP BY critere_id
/*
TODO : Calcul de la distribution d'age
*/