Portál AbcLinuxu, 12. května 2025 16:39
SELECT name AS meno, SUM(price) AS suma, MONTH(dtime) AS mesiac, YEAR(dtime) AS rok FROM ca_calls WHERE DATE_SUB(CURDATE(),INTERVAL 6 MONTH) < DATE(dtime) GROUP BY name, MONTH(dtime), YEAR(dtime) ORDER BY name, YEAR(dtime) DESC, MONTH(dtime) DESCQuery spočítava sumy v price podľa mena, mesiaca a roku. štruktúra tabuľky je nasledovná:
DROP TABLE IF EXISTS `rhs`.`ca_calls`; CREATE TABLE `rhs`.`ca_calls` ( `id` int(15) unsigned NOT NULL AUTO_INCREMENT, `number` int(10) unsigned zerofill NOT NULL, `name` varchar(255) COLLATE utf8_slovak_ci NOT NULL, `called` varchar(50) COLLATE utf8_slovak_ci DEFAULT NULL, `what` varchar(255) COLLATE utf8_slovak_ci NOT NULL, `duration` time NOT NULL, `type_call` varchar(8) COLLATE utf8_slovak_ci NOT NULL, `type_service` char(1) COLLATE utf8_slovak_ci NOT NULL, `price` float(6,4) NOT NULL, `volume` int(12) unsigned NOT NULL, `dtime` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=427521 DEFAULT CHARSET=utf8 COLLATE=utf8_slovak_ci;Je to tabuľka s výpisom hovorov. Problém mám vždy s posledným mesiacom v rade teraz momentálne 2010-10. Sumu nespočíta správne. Ak vykonám nasledovný prikaz:
SELECT SUM(price) FROM ca_calls WHERE name = 'ADMIN 01' AND YEAR(dtime) = '2010' AND MONTH(dtime) = '10'tak je suma iná - vyššia ako pri prvej query. Vedel by mi niekto poradiť kde robím chybu? Popr. ak by mi niekto vedel poradiť aj ako by som vedel dostať výsledok - niečo ako pivot table. Teda výsledok query by zobrazoval posledných sumu za 6 mesiacov - mená by boli v riadkoch. Niečo takéto:
Meno 2011-03 2011-02 2011-01 2010-12 2010-11 2010-10 Admin01 20.0 15.0 21.0 30.5 11.1 15.1 Admin02 22.0 25.0 51.0 32.5 51.1 55.1 Admin03 26.0 65.0 61.0 36.5 21.1 45.1Výstup z prvej query transformujem do takejto tabuľky na aplikačnej vrstve a trvá to viac ako je prípustné(tabuľka má cca 600k riadkov). Ďakujem pekne za radu
Řešení dotazu:
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.