[ dekse51 @ 26.01.2019. 18:08 ] @
Imam bazu koji skladišti prodaju loptica (crvene, plave, zelene, žute i bele) tokom godine. Treba mi query koji će prikazivati prodaju loptica po mesecima odnosno da u naslovu tabele (header-u) budu prikazani meseci (od januara do decembra) a u prvoj levoj koloni da budu loptice i njihove boje.
[ jablan @ 26.01.2019. 18:49 ] @
Liči na zadatak. Napiši ovde dokle si stigao.
[ dekse51 @ 26.01.2019. 19:19 ] @
Citat:
jablan: Liči na zadatak. Napiši ovde dokle si stigao.


Do samog početka :-)

SELECT sum(kolicina), monthname(datum), vrsta_loptica
FROM tabela_unos_loptica
WHERE year(datum)=2018
group by vrsta_loptica

Ali ja ne želim mesece u vertikali već u horizontali
[ jablan @ 26.01.2019. 19:22 ] @
Prezentaciju reši na aplikativnom nivou.
[ dekse51 @ 26.01.2019. 19:29 ] @
Citat:
jablan: Prezentaciju reši na aplikativnom nivou.


Hoću, samo mi fali druk lager :-)
[ djoka_l @ 27.01.2019. 00:23 ] @
To što tebi treba se zove pivot i može da se uradi na dva načina, zavisno od baze: težak i teži način.

Naravno, postoji i lak način, a to je da rezultat upita staviš u Excel i da napraviš od podataka pivot tabelu.
Ono što ti je jablan sugerisao je Excel, odnosno prezentacija podataka na apikativnom nivou. Ili upumpaj u excel ili u svoju aplikaciju, recimo PHP aplikaciju, i napravi od sirovih podataka cross-tab izveštaj.

TO SE NE RADI U SQL-u!!!
Ali ako si baš zapeo da bude SQL upit, evo jedne ideje:

select vrsta_loptica, sum(januar), sum(februar), ... , sum(decembar)
from (
SELECT vrsta_loptica, sum(kolicina) januar, 0 februar, 0 mart, 0 april, 0 maj,
0 jun, 0 jul, 0 avgust, 0 septembar, 0 novembar, 0 decembar
FROM tabela_unos_loptica
WHERE year(datum)=2018
and month(datum) = 1
group by vrsta_loptica
UNION ALL
SELECT vrsta_loptica, 0 januar, sum(kolicina) februar, 0 mart, 0 april, 0 maj,
0 jun, 0 jul, 0 avgust, 0 septembar, 0 novembar, 0 decembar
FROM tabela_unos_loptica
WHERE year(datum)=2018
and month(datum) = 2
group by vrsta_loptica
UNION ALL
...
UNION ALL
SELECT vrsta_loptica, 0 januar, 0 februar, 0 mart, 0 april, 0 maj,
0 jun, 0 jul, 0 avgust, 0 septembar, 0 novembar, sum(kolicina) decembar
FROM tabela_unos_loptica
WHERE year(datum)=2018
and month(datum) = 12
group by vrsta_loptica)
group by vrsta_loptica

A, da, zaboravio sam da ti kažem: TO SE NE RADI U SQL-u!!!
[ dsivic @ 27.01.2019. 09:50 ] @
http://www.artfulsoftware.com/infotree/qrytip.php?id=523
[ dekse51 @ 27.01.2019. 10:59 ] @
Citat:
djoka_l: To što tebi treba se zove pivot i može da se uradi na dva načina, zavisno od baze: težak i teži način.

Naravno, postoji i lak način, a to je da rezultat upita staviš u Excel i da napraviš od podataka pivot tabelu.
Ono što ti je jablan sugerisao je Excel, odnosno prezentacija podataka na apikativnom nivou. Ili upumpaj u excel ili u svoju aplikaciju, recimo PHP aplikaciju, i napravi od sirovih podataka cross-tab izveštaj.

TO SE NE RADI U SQL-u!!!
Ali ako si baš zapeo da bude SQL upit, evo jedne ideje:

select vrsta_loptica, sum(januar), sum(februar), ... , sum(decembar)
from (
SELECT vrsta_loptica, sum(kolicina) januar, 0 februar, 0 mart, 0 april, 0 maj,
0 jun, 0 jul, 0 avgust, 0 septembar, 0 novembar, 0 decembar
FROM tabela_unos_loptica
WHERE year(datum)=2018
and month(datum) = 1
group by vrsta_loptica
UNION ALL
SELECT vrsta_loptica, 0 januar, sum(kolicina) februar, 0 mart, 0 april, 0 maj,
0 jun, 0 jul, 0 avgust, 0 septembar, 0 novembar, 0 decembar
FROM tabela_unos_loptica
WHERE year(datum)=2018
and month(datum) = 2
group by vrsta_loptica
UNION ALL
...
UNION ALL
SELECT vrsta_loptica, 0 januar, 0 februar, 0 mart, 0 april, 0 maj,
0 jun, 0 jul, 0 avgust, 0 septembar, 0 novembar, sum(kolicina) decembar
FROM tabela_unos_loptica
WHERE year(datum)=2018
and month(datum) = 12
group by vrsta_loptica)
group by vrsta_loptica

A, da, zaboravio sam da ti kažem: TO SE NE RADI U SQL-u!!!


A bre djoka_l, ispisa ti ovde svašta nešto. Pa moj program bi trebao ceo dan da provede rešavajući tvoj algoritam. A najbolja ti je ova rečenica "A, da, zaboravio sam da ti kažem: TO SE NE RADI U SQL-u!!!". Pa u čemu se radi, hahahahah. U rerni, tosteru, blenderu ... Ali pretpostavljam da si imao najbolju nameru. Samo da ti kažem, rešio sam zadatak ali sam zato malo sada nenaspavan. Ali si mi ti oraspoložio dan .
[ anon70939 @ 27.01.2019. 11:33 ] @
što ne pokažeš rešenje?
[ dekse51 @ 27.01.2019. 11:49 ] @
Za sada evo ovako:

Meseci u naslovu

A ako se dotični batica izvini svima kojima je brusio po forumu pa i meni, dajem i algoritam za ĐŽ.
[ anon70939 @ 27.01.2019. 13:47 ] @
ne razumem ni koji batica, ni ko ti je brusio, ni kako algoritam za dž.

Ti si valjda tražio za dž

Mene zanima rešenje do kojeg si došao, a da je čist SQL
[ Deunan @ 27.01.2019. 15:08 ] @
Postavi da vidimo, mozda ima bolje resenje...
Ako nekome treba za "dzabe":

Code:

SELECT vrsta_loptica, count(vrsta_loptica) as ukupno, 
SUM(case when MONTH(datum) = 1 then 1 else 0 end) as januar, 
SUM(case when MONTH(datum) = 2 then 1 else 0 end) as februar, 
SUM(case when MONTH(datum) = 3 then 1 else 0 end) as mart,
SUM(case when MONTH(datum) = 4 then 1 else 0 end) as april
FROM `tabela_unos_loptica` group by vrsta_loptica