X
ďťż
 
[MySQL] group by i dodatkowe warunki. Pomoc przy zapytaniu. ďťż
 
[MySQL] group by i dodatkowe warunki. Pomoc przy zapytaniu.
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • own-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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com

    Drogi uzytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczac Ci coraz lepsze uslugi. By moc to robic prosimy, abys wyrazil zgode na dopasowanie tresci marketingowych do Twoich zachowan w serwisie. Zgoda ta pozwoli nam czesciowo finansowac rozwoj swiadczonych uslug.

    Pamietaj, ze dbamy o Twoja prywatnosc. Nie zwiekszamy zakresu naszych uprawnien bez Twojej zgody. Zadbamy rowniez o bezpieczenstwo Twoich danych. Wyrazona zgode mozesz cofnac w kazdej chwili.

     Tak, zgadzam sie na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerow w celu dopasowania tresci do moich potrzeb. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

     Tak, zgadzam sie na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerow w celu personalizowania wyswietlanych mi reklam i dostosowania do mnie prezentowanych tresci marketingowych. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

    Wyrazenie powyzszych zgod jest dobrowolne i mozesz je w dowolnym momencie wycofac poprzez opcje: "Twoje zgody", dostepnej w prawym, dolnym rogu strony lub poprzez usuniecie "cookies" w swojej przegladarce dla powyzej strony, z tym, ze wycofanie zgody nie bedzie mialo wplywu na zgodnosc z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.