Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zašto SUM(smallint * decimal) ne daje ispravan rezultat

[es] :: MySQL :: Zašto SUM(smallint * decimal) ne daje ispravan rezultat

[ Pregleda: 3126 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dsivic

Član broj: 188446
Poruke: 105



+2 Profil

icon Zašto SUM(smallint * decimal) ne daje ispravan rezultat05.04.2015. u 19:46 - pre 109 meseci
Code:

-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `broj_komada` smallint(4) DEFAULT '0',
  `vrijeme_izrade` decimal(10,5) NOT NULL DEFAULT '0.00000',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of test3
-- ----------------------------
INSERT INTO `test` VALUES ('1', '19', '1.03298');
INSERT INTO `test` VALUES ('2', '19', '0.79643');


SELECT
    SUM(broj_komada) AS bk,
    SUM(vrijeme_izrade) AS viz,
    SUM(broj_komada * vrijeme_izrade) AS ukupno
FROM
    test

+----+---------+----------+
| bk | viz     | ukupno   |
+----+---------+----------+
| 38 | 1.82941 | 34.75879 |
+----+---------+----------+


SELECT
    SUM(broj_komada) AS bk,
    SUM(vrijeme_izrade) AS viz,
    SUM(broj_komada) * SUM(vrijeme_izrade) AS ukupno
FROM
    test;
+----+---------+----------+
| bk | viz     | ukupno   |
+----+---------+----------+
| 38 | 1.82941 | 69.51758 |
+----+---------+----------+

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Zašto SUM(smallint * decimal) ne daje ispravan rezultat05.04.2015. u 20:13 - pre 109 meseci

19*1.03298 = 19.62662
19*0.79643 = 15.13217
15.13217 + 19.62662 = 34.75879

19+19 = 38
1.03298+0.79643 = 1.82941
38*1.82941 = 69.51758


A*B + C*D != (A+C) * (B+D)


ili u tvom slucaju

A*B + A*D = A(B+D) != 2A(B+D)

mysql nista ne gresi ti mora resis u glavi sta zelis da dobijes kao rezultat
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Zašto SUM(smallint * decimal) ne daje ispravan rezultat05.04.2015. u 20:23 - pre 109 meseci
U stvari ovo baš i daje ispravan rezultat (ukupno utrošeno vreme na izradu):
Code:

SUM(broj_komada * vrijeme_izrade) AS ukupno


A ovo ne daje ništa u nekom praktičnom smislu:
Code:

SUM(broj_komada) * SUM(vrijeme_izrade) AS ukupno
 
Odgovor na temu

dsivic

Član broj: 188446
Poruke: 105



+2 Profil

icon Re: Zašto SUM(smallint * decimal) ne daje ispravan rezultat05.04.2015. u 20:27 - pre 109 meseci
@bogdan.kecman

Jasno mi je.

Hvala na brzom odgovoru.
 
Odgovor na temu

[es] :: MySQL :: Zašto SUM(smallint * decimal) ne daje ispravan rezultat

[ Pregleda: 3126 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.