ďťż
 
[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