nisu bas svi experti za oracle ovde (ni ja nisam neki oracle expert ali ovo valjda znam) :) a i bogami ljudi nekad moraju da spavaju :)
tvoj oracle upit:
Code:
SELECT Round(SUM(Masa)/:Masa) ...
ne radi "stand alone", dakle oracle ce ti traziti da bindujes :Masa za nesto. Upit bi mogao da bude i SUM(Masa)/:foobar nema nikakve razlike ... :x je varijabla koju ti moras da definises... to sto si je nazvao isto kao ime kolone u tabeli samo izaziva pometnju (dal sam naglasio da nisam oracle expert :D - slobodno me ispravi ako ovo nije tacno)
Kapiram iz drugog posta da ti je vrednost varijable :Masa u stvari suma (totalna za celu tabelu) kolone masa ...
dakle, upit je (neoptimizovan) otprilike ovako:
Code:
SELECT Round(SUM(Masa) / ( SELECT SUM(Masa) FROM t1)) FROM t1 GROUP BY nesto;
dakle za svako "nesto" daj "zbir masa tog necega" / "zbir masa svih artikala" ... (procenat kojim nesto ucestvuje u totalnoj masi ?)
e sad, da bi upit prepisao u mysql generalno umesto :X stavis @X (na mysql-u varijable su @X ne kao na oraklu :X) i varijabli moras da das vrednost "PRE UPITA" ne mozes kao na oracle-u "posle".
Code:
set @X = ( SELECT SUM(Masa) FROM t1 );
SELECT Rount(SUM(Masa)/@X) FROM t1 GROUP BY nesto;
nadam se da ti ovo resava problem i daje odgovor na pitanje....
obrati paznju da set @X = ( SELECT SUM(Masa) FROM t1 ); dodeljuje vrednost @X "trenutnu" sumu, dakle @X nije funkcija nego vrednost. Ako se izmedju set @X=... i SELECT @X .. promeni ukupna suma @X nece dobiti "novu" vrednost!! dakle:
Code:
mysql> create table t1 (a int) engine=myisam; insert into t1 values (1), (1), (1);
Query OK, 0 rows affected, 2 warnings (0.04 sec)
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select sum(a) from t1;
+--------+
| sum(a) |
+--------+
| 3 |
+--------+
1 row in set (0.00 sec)
mysql> set @X = ( select sum(a) from t1 );
Query OK, 0 rows affected (0.00 sec)
mysql> select @X;
+------+
| @X |
+------+
| 3 |
+------+
1 row in set (0.00 sec)
mysql> insert into t1 values (1);
Query OK, 1 row affected (0.00 sec)
mysql> select sum(a) from t1;
+--------+
| sum(a) |
+--------+
| 4 |
+--------+
1 row in set (0.00 sec)
mysql> select @X;
+------+
| @X |
+------+
| 3 |
+------+
1 row in set (0.00 sec)
nemam pojma da li oracle pamti onaj bind kao funkciju ili kao vrednost (mysql dakle pamti kao vrednost) ali bolje da te upozorim nego da lupas glavu sta se desava.