[MySQL] group by i dodatkowe warunki. Pomoc przy zapytaniu.
sawic - 27-06-2006 00:08
[MySQL] group by i dodatkowe warunki. Pomoc przy zapytaniu.
Witam. Mam takie zapytanie:
select round(((sum(komorka1) / sum(komorka2)) * 100),2) as procent, jakies_pole from db.table where komorka3 != '0' and komorka4 != 'text' group by jakies_pole order by procent desc
I to działa jak należy. Problem zaczyna się gdy chcę wyświetlić tylko te wartości gdzie procent jest większy od zera.
Próbowałem:
procent:=(round(((sum(komorka1) / sum(komorka2)) * 100),2)) a następnie where @procent > 0.
where procent > 0.
where (round(((sum(komorka1) / sum(komorka2)) * 100),2) > 0)
from db.table having procent > 0.
Niestey żadne z powyższych nie działa. Czy mógłby ktoś podsunąć mi rozwiązanie, bo z tutorialem mysql się chyba już bardziej nie dogadam, a i sam raczej tego nie wymyślę.
Pozdrawiam
Artur Gancarz - 29-06-2006 00:42
Użytkownik sawic napisał: > Witam. > Mam takie zapytanie: > > select round(((sum(komorka1) / sum(komorka2)) * 100),2) as procent, > jakies_pole from db.table where komorka3 != '0' and komorka4 != 'text' > group by jakies_pole order by procent desc > > I to działa jak należy. > Problem zaczyna się gdy chcę wyświetlić tylko te wartości gdzie procent > jest większy od zera. > > Próbowałem: > > procent:=(round(((sum(komorka1) / sum(komorka2)) * 100),2)) a następnie > where @procent > 0. > > where procent > 0. > > where (round(((sum(komorka1) / sum(komorka2)) * 100),2) > 0) > > from db.table having procent > 0. > > Niestey żadne z powyższych nie działa. > Czy mógłby ktoś podsunąć mi rozwiązanie, bo z tutorialem mysql się chyba > już bardziej nie dogadam, a i sam raczej tego nie wymyślę. > > Pozdrawiam
Witaj, ja zrobilem takie skrypty u siebie (za Twoim przykładem pierwszy): select round((sum(id) / 3.5 * 100),2) as procent, imie from znajomi where urodziny != '0' and imieniny not like '%listop%' group by imie order by procent desc
i oczywiście zadziałało, a następnie select round((sum(id) / 3.5 * 100),2) as procent, imie from znajomi where urodziny != '0' and imieniny not like '%listop%' group by imie having procent>2500 order by procent desc
Zakładam (może błędnie) że "większy od 2500" czy od "0" to wszystko jedno (miałem tylko dodatnie wartości). Powyższe zadziałało u mnie bez żadnego "ale" (mysql 5.0.22, linux)
Jeden jedyny błąd który mi mysql wyświetlił wystąpił wtedy, gdy dałem "having" przed "group". Ze specyfikacji wynika, że jeśli coś liczone, to musi być klauzula "having" ale koniecznie PO GROUP.
mam nadzieję, że w czymś pomogłem pozdrawiam Artur Gancarz
Migat - 29-06-2006 00:43
sawic wrote: > procent:=(round(((sum(komorka1) / sum(komorka2)) * 100),2)) a następnie > where @procent > 0.
Nie dziala bo jak niby chcesz znac porcent przed pogrupowaniem :) Do tego sluzy HAVING, ktory dziala juz na wartosciach zagregowanych i pogrupowanych przez GROUP
bla bla bla GROUP BY pole HAVING procent > 10.
Pzdr PawelB
sawic - 29-06-2006 00:43
Artur Gancarz napisał(a): > Jeden jedyny błąd który mi mysql wyświetlił wystąpił wtedy, gdy dałem > "having" przed "group". Ze specyfikacji wynika, że jeśli coś liczone, to > musi być klauzula "having" ale koniecznie PO GROUP. > > mam nadzieję, że w czymś pomogłem
Pomogłeś. Teraz działa. Nie wiem co ja w tym manualu wyczytałem, że dawałem "having" w innym miejscu,
Dziękuję.
Pozdrawiam
sawic - 29-06-2006 00:43
Migat napisał(a): > Nie dziala bo jak niby chcesz znac porcent przed pogrupowaniem :) > Do tego sluzy HAVING, ktory dziala juz na wartosciach zagregowanych i > pogrupowanych przez GROUP > > bla bla bla GROUP BY pole HAVING procent > 10.
Teraz działa. Dziękuję.
Pozdrawiam
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?=
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
[MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?=
Gdzie MySQL 4.1, a gdzie 5.0?
[MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?=
[MS SQL] "set names" (mySQL) w MS SQL
MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
zanotowane.pldoc.pisz.plpdf.pisz.plown-team.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|