Bonjour à tous,
Je me lance dans une création d'une base mysql (novice) pour travailler mes fichiers CSV. j'ai commencé par suivre le cours complet du site 'developpez.net.
je vous explique le principe ce que je souhaite faire.
D'abord je récupère un fichier CSV que j'intègre dans une table --OK pour 700 000 lignes
`no` `fichier` `dt` `ch1` `ch3` `ch5` `ch7` `ch9` 1 191018095110ug 18/09/2019 09:51:15 6.8 63.6 67.8 1.1 0.5 2 191018095110ug 18/09/2019 09:51:20 6.8 63.8 67.9 1.1 0.5 3 191018095110ug 18/09/2019 09:51:25 6.8 63.2 68 1.1 0.5 4 191018095110ug 18/09/2019 09:51:30 6.8 66.6 68.1 1.1 0.5 5 191018095110ug 18/09/2019 09:51:35 6.8 64.2 68 1.1 0.5 ...
ensuite je veux pour chaque ligne de CH3, CH5,CH7 et CH9 réaliser une première série de calcul que je fait avec une vue. voici mon code :
ensuite je refait des calcul avec ma vue et j'arrive a afficher les données mais pas à les stocker voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE OR REPLACE VIEW V_191018095110ug AS SELECT round(CH1, 2) as pression, round(CH3*400*SQRT(3)*0.88/1000, 2) as PComp1, round(CH5*400*SQRT(3)*0.88/1000, 2) as PComp2, round(CH7*400*SQRT(3)*0.88/1000, 2) as PComp3, round(CH9*400*SQRT(3)*0.88/1000, 2) as PComp4, FROM 191018095110ug;
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
44
45 SELECT PComp1,PComp2,PComp3,PComp4, PComp1+PComp2+Pcomp3+PComp4 as TotPui, @fctcomp1 := CASE WHEN PComp1<10 THEN '' when PComp1>=10 and PComp1<66 then '0' when PComp1>=66 then '1' end as fctcomp1, @fctcomp2 := CASE WHEN PComp2<7 THEN '' when PComp2>=7 and PComp2<30 then '0' when PComp2>=30 then '1' end as fctcomp2, @fctcomp3 := CASE WHEN PComp3<10 THEN '' when PComp3>=10 and PComp3<78 then '0' when PComp3>=78 then '1' end as fctcomp3, @fctcomp4 := CASE WHEN PComp4<5 THEN '' when PComp4>5 and @PComp4<35 then '0' when PComp4>35 then '1' end as fctcomp4, @dcomp1 := case WHEN @fctcomp1 = '1' then '732' WHEN @fctcomp1 = '0' then '0' WHEN @fctcomp1 = '' then '' End as dcomp1, @dcomp2 := case WHEN @fctcomp2 = '1' then '345,6' WHEN @fctcomp2 = '0' then '0' WHEN @fctcomp2 = '' then '' End as dcomp2, @dcomp3 := case WHEN @fctcomp3 = '1' then '817.8' WHEN @fctcomp3 = '0' then '0' WHEN @fctcomp3 = '' then '' End as dcomp3, @dcomp4 := case WHEN @fctcomp4 = '1' then '100' WHEN @fctcomp4 = '0' then '0' WHEN @fctcomp4 = '' then '' End as dcomp4, @dcomp1+@dcomp2+@dcomp3+@dcomp4 as Totdeb, round(((PComp1+PComp2+PComp3+PComp4)*1000)/(@dcomp1+@dcomp2+@dcomp3+@dcomp4),2) as NRJ FROM V_191018095110ug;
En fait je souhaiterai avoir toutes ses données sur une seule table (ou plusieurs) afin de d'effectuer les calculs min, avg, max et sum pour chaque colonne. Voir les données me rassure pour vérifier que cela ce passe bien mais en réalité cela me sert à pas grand chose, ce qui compte ce sont les calculs min, avg, max et sum pour chaque colonne et les valeurs Totdebavec les dates.
j'ai essayé de faire tous les calculs sur une vue, mais je peux pas utiliser les variables utilisateurs.
Est ce que il faut faire plusieurs tables ? est ce que je suis sur le bon chemin?
c'est quelque chose que je vais devoir refaire a chaque import de nouveau fichier CSV (avec une procédure stocké).
je sais pas si je suis assez explicite dans l'explication de mes demandes.
je vous remercie par avance.
Partager