Multiplication de colonne [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 12-12-2005 à 13:48:55
tu veux multiplier les valeurs de toutes les lignes d'une colonne
ça n'existe pas, et à mon avis, ce ne sera jamais supporté ! en quelques lignes t'es certain de provoquer une erreur de calcul !
même si un NUMBER permet (à quelques pas grand chose près) de référencer chaque atome de la Lune, si tu multiplies des valeurs un peu élevées, t'as toutes tes chances de faire un dépassement, même avec ce type...
Marsh Posté le 12-12-2005 à 14:58:25
En fait il s'agit d'un calcul d'indicateur qui porte sur un ou deux facteurs (actuellement) et peut-être plus plus tard. J'ai pour consigne de faire mes calculs avec une requête et de ne pas passer par php (ou en tout cas le moins possible).
Mon problème c'est de pouvoir multiplier 1, 2 ou 3 colonnes en utilisant une requête, tout en sachant que le nombre de facteur n'est pas prévisible
donc ça me donne un truc du genre
SELECT col1 ...
SELECT col1*col2 ...
SELECT col1*col2*col3 ...
Bref, voilà le tableau.
Bon ben il ne me reste plus qu'à passer par PHP, j'aurais tout essayé
Marsh Posté le 12-12-2005 à 15:27:30
euh...
tu peux poster la structure de ton bordel ? parceque là, c'est vraiment pas clair...
j'ai l'impression que tu veux générer dynamiquement une requête, et ça c'est pas possible
Marsh Posté le 12-12-2005 à 15:27:48
(enfin, si, tout est possible, mais c'est pas vraiment recommandé)
Marsh Posté le 13-12-2005 à 11:43:23
En gros voilà ce que j'aimerai obtenir :
SELECT nom_indicateur, date_jour, (SUM(points)/SUM(points_obj))*100
FROM total_point
GROUP BY nom_indicateur, date_jour ;
Avec
CREATE VIEW total_point AS
SELECT nom_indicateur, date_jour, MULT(points) AS points, MULT(points_obj) AS points_obj
FROM facteur_indicateur LEFT JOIN indicateur USING (code_indicateur)
GROUP BY nom_indicateur, date_jour ;
Sachant qu'il y a au maximum 3, 4 facteur_indicateur avec le même code_indicateur, mais que ce nombre n'est pas constant
(donc je ne peux pas faire d'auto-jointure).
Sinon, non, moi non plus je ne tiens pas à faire une requète à la volée.
Marsh Posté le 13-12-2005 à 12:38:09
là à vue de nez, je ne vois pas de solution à ton problème. a mon avis, c'est mort !
Marsh Posté le 14-12-2005 à 17:31:24
Je ne comprends pas ce que tu veux dire par "pas prévisible".
Si cela veut dire que dans certain cas les colonnes sont nulles, alors tu devrais t'en sortir avec des DECODE et des NVL ..... mais parle t on bien d'Oracle ici ?? ..
Marsh Posté le 15-12-2005 à 09:16:00
je suis sur mysql et pas prévisible ça veut dire que certains indicateurs ont actuellement un ou deux facteurs. Mais plus tard, il est possible que certains indicateurs aient trois ou quatre facteurs.
Pour faire plus clair, pour l'instant mon MULT est le produit de une ou deux lignes, alors que plus tard, ça pourra être le produit de une, deux, trois ou quatre lignes ...
Marsh Posté le 15-12-2005 à 09:45:15
nope.
je pense que son problème c'est :
select truc, machin from bidule where machin
=> Ca retourne :
truc machin
----------------
2 1
3 1
4 2
2 2
5 2
Lui, il veut :
select mul(truc), machin from bidule
mul(truc) machin
--------------------
6 1
40 2
Marsh Posté le 15-12-2005 à 09:50:59
ah ok, j'avais mal compris ...Ben, jamais entendu parler d'un truc pareil, a mon avis c'est mauvais signe.... Tu ne pourrais pas decrire plus precisement ton probleme pour voir s'il n'y pas un probleme de conception ?
Marsh Posté le 15-12-2005 à 10:02:19
ça peut pas être pire que lorsque je faisais des calculs géométriques dans mes requêtes
genre, t'as un damier représenté par la clé x,y, et tu veux rammener toutes les "cases" où il y a un certain flag dans un cercle de x cases autour de la case n,m
c'était assez marrant et certainement pas très courant
Marsh Posté le 15-12-2005 à 10:07:26
Si ca c'est deja plus courant :
select
min(x) over(partition by abscisse order by abscisse range between 2 preceding and 2 following) min_abscisse_2,
max(x) over(partition by abscisse order by abscisse range between 2 preceding and 2 following) max_abscisse_2,......
idem avec les ordonnées....
Marsh Posté le 15-12-2005 à 10:55:13
ça c'est pour un carré
(pis tant qu'à faire, auant faire deux between, ça passe même sous mysql )
Marsh Posté le 15-12-2005 à 12:13:27
c'était le cas
un civilization 2 multiplanétaire en HTML avec une base de données derrière pour gérer la charge massive-multiplayer.
sauf que j'ai même pas eu le courage de pontre 2 lignes de code, me suis arrêté à la conception de la base et des principales PS
Marsh Posté le 15-12-2005 à 14:31:22
trop de travail, trop d'idées, personne pour m'épauler (genre demandé à plusieurs reprises un petit coup de main pour faire une ébauche de graphisme, pas eu de réponse, ça m'a lourdé)
Marsh Posté le 15-12-2005 à 14:37:31
Faut pas oublier que l'enthousiasme est communicatif, j'ai eu les memes problemes au debut et ensuite je me suis fait un petit carnet d'amis passionnés (en passant par des technos parfois les plus surprenantes, y'a meme eu DIV...)
Marsh Posté le 15-12-2005 à 14:45:41
ben tu m'intéresses bien toi tu sais
surtout que des idées, c'est pas ça qui me manque, j'ai tout le temps envie de me lancer dans des projets de fou furieux
Marsh Posté le 15-12-2005 à 14:49:25
Le plus dur, c'est de trouver des gens deja passionés, sinon la plupart te lache en cours de route et c'est très démotivant, quelques fois il faut chercher des gens passionnés dans des domaines completement differents du jeu... J'ai longtemps travaillé avec un pretre qui faisait du 3DSMAX pour un site sur sa paroisse (ensemble on a fait un clone de Sensible Soccer....).
Marsh Posté le 15-12-2005 à 14:55:37
bon, va falloir que j'aille me faire batiser un jour si je comprends bien
Marsh Posté le 15-12-2005 à 14:57:34
Es tu pret a en passer par la ? ... Si oui, alors tu es pret pour developper un jeu !!
Marsh Posté le 15-12-2005 à 15:02:30
Ben disons que c'est pas forcément le fait de développer un jeu qui m'intéresse.
C'est surtout résoudre un problème, abattre un travail qui semble insurmontable, et avoir àun moment l'occasion de dire "c'est moi qui ai fait ce petit bout de l'application qui sert à rien là, tu vois ?"
Marsh Posté le 15-12-2005 à 15:56:20
Ca me rappelle le jour ou j'ai remplacé dans un morceau de code :
If x=0 Then
x=1
else if x=1
x=0
end if
par x=1-x ....
j'avais traumatisé le gars qui codait avec moi
Marsh Posté le 15-02-2006 à 19:03:22
couleur cafe a écrit : Voilà, je souhaite savoir s'il existe une fonction du type de SUM qui permettent de faire le produit de colonne. En gros je cherche à faire quelque chose du style : |
Salut,
étant donné que le produit a1*a2*...*an est égal à exp(log a1 + log a2 +...+ log an)
le produit d'une colonne toto peut se faire comme ceci:
SELECT exp(SUM(log(toto)))
FROM matable;
Marsh Posté le 12-12-2005 à 13:29:42
Voilà, je souhaite savoir s'il existe une fonction du type de SUM qui permettent de faire le produit de colonne. En gros je cherche à faire quelque chose du style :
SELECT kkchose,MULT(colonne)
FROM TABLE
WHERE cond1=cond2
GROUP BY kkchose ;
Merci.