Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Lopuch, server nejen
pro botaniky

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub Database (mysql,...) [ŽP: neomezená] (kategorie Programování) moderuje melkor_unlimited.
Archiv
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: ahutnqp
[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
pepak pepak - Pepak.net 7.9.2012 05:09  1454
EtDirloth: IMHO to nemá cenu, pokud bude chtít oba údaje (počet kladných, počet záporných), tak bude stejně muset projít celou tabulku. Něco by se dalo ušetřit, kdyby zjišťoval třeba jen počet záporných a záporných bylo výrazně méně než kladných, ale pro požadované výstupy jsou indexy k ničemu.
themajkl themajkl All those moments will be lost in time - like tears in rain. 6.9.2012 22:01  1453
EtDirloth [1452]: Indexy - jasně. Ale já jsem tím vždycky řešil zadání typu "potřebuju vedle sebo počty/sumy v pondělí, v úterý..." a tam nemá smysl o nějakých indexech uvažovat.
etdirloth EtDirloth 6.9.2012 21:31  1452
knedle: presne to som ti chcel napisat, ze ti stacia dva agregaty (suma alebo pocet)
themajkl: to sa nemusi vyplatit pri velkych poctoch, pretoze tam nevies pouzit index; osobne by som si tam dal druhy stlpec -> "like_positive" (dislike indikuje nulou) a skusil kludne:
select count(*), sum(like_positive) ... group by interpret_id, song_id
a potom porovnal query plan oproti dvom samostatnym dotazom s where [like|dislike]
knedle knedle online - Krabice živých 6.9.2012 21:01  1451
themajkl [1449]: díky, funguje

SELECT `interpret_id`, `song_id`, SUM(`like`) as likeRating,
SUM(case when `like` > 0 then 1 else 0 end) as plusLike,
SUM(case when `like` < 0 then 1 else 0 end) as minusLike
FROM `rating`
group by `interpret_id`, `song_id`
order by likeRating ASC
knedle knedle online - Krabice živých 6.9.2012 20:40  1450
hmm - tak me napadlo, ze potrebuju jen :

- pocet kladnych like
- pocet zapornych like

zbytek z toho dopocitam

themajkl - mrknu zda to muzu udelat takto ja

themajkl themajkl All those moments will be lost in time - like tears in rain. 6.9.2012 11:23  1449
V Informixu bych to udělal přes
select ...
sum(case when like=1 then 1 else 0 end),
sum(case when like=-1 then 1 else 0 end),
...
knedle knedle online - Krabice živých 6.9.2012 11:07  1448
dotaztab: log:

id (AI)
interpret_id
song_id
day (nepodstatne)
like (obsahuje INT 1 nebo -1)

jde jednim SQL dotazem ziskat:

- pocet like celkem u interpret_id+song_id
- suma like u interpret_id+song_id

(tohle je bez problemu)

ale taky:
- pocet kladnych like
- pocet zapornych like

a razeni podle techto 4 vystupu

delat 3 dotazy se mi moc nechce...


knedle knedle online - Krabice živých 24.4.2012 09:53  1447
huh [1446]: jop - prave timto smerem sem se uz vydal

ja totiz to chtel puvodne spocitat uz v tom pohledu, bez mezikroku... chtěl jsem toho moc...
huh huh 24.4.2012 09:31  1446
knedle [1444]: no to by melo jit:
pohled_realita: ukol_id, datum, sum(cas) … group by ukol_id, datum
a pak spojit plan a pohled_realita pres ukol_id a datum
nebo v cem je problem?
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 24.4.2012 09:05  1445
pepakyes, to bude ono, jen bude problem pokud budou duplicity ale to uz nejak osefuju, dik
knedle knedle online - Krabice živých 24.4.2012 09:05  1444
dotazpotrebuju porovnat casy ze dvou tabulek - plan a realita, kdy:

plan
- ...
- ukol_id - coz je spojovaci prvek spolecne s datumem
- datum
- cas (time - napr 3:30)

realita
- ...
- ukol_id
- datum
- cas

struktura je podobna, ale bacha v realite muze byt nekolik radku se shodnym datumem a ukol_id

a ja potrebuju porovnat cas planu (dle data a ukolu) vuci (souctu) reality stejneho data a ukolu

rikam si, ze si udelam pohled, ale nejak se mi nedari to skloubit
pepak pepak - Pepak.net 24.4.2012 09:02  1443
Jde, ale nijak zvlášť pěkně - chce to subselect: jedním selectem vytáhneš A a MAX(B), to pak použiješ jako jednu tabulku a najoinuješ k ní druhou tabulku s C. Něco takového:

SELECT t1.A, t1.B, t2.c
FROM (SELECT A, MAX(B) AS B FROM tabulka GROUP BY A) t1
JOIN tabulka t2 ON t2.A=t1.A AND t2.B=t1.B
knedle knedle online - Krabice živých 24.4.2012 09:00  1442
napadá mě jen maxnout v concatu ? teda pokud to jde

ale budes mit string, ne 3 sloupce
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 24.4.2012 08:11  1441
vysledek by tedy mel byt:
A B C

text 1, 36, 8
text 2, 92, 9
text 3, 50, 0
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 24.4.2012 08:10  1440
je nějaká možnost, vytáhnout z tabulky vypadající nějak takto:

A B C
text 1, 12, 3
text 1, 15, 5
text 1, 36, 8
text 2, 92, 9
text 2, 18, 6
text 3, 50, 0

vzdy jen jeden unikatni sloupec A, k nemu maximum sloupec B a k tomu hodnotu ze sloupce C ktera je ve stejnem radku jako to maximum ve sloupci B?

pomoci group by to zvladnu az potud, kdy potrebuju ziskat zbytek radku kde je to maximum a ztracim nadeji ze tovubec nejak lze :(

[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt