![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 44 Dołączył: 17.02.2004 Skąd: Wieliczka Ostrzeżenie: (10%) ![]() ![]() |
mam mały zgryz ze zbudowaniem selecta zwracającego wynik w %.
Mam taką oto tabelę pola: TYP, PODTYP (przyjmują wartość w zakresie 1-99), VAR1, VAR2, VAR3 (wartość 1 lub 2) Rekordów takich docelowo będzie całkiem sporo. Teraz chcę zrobić coś takiego, że wybieram sobie TYP i PODTYP i dla nich zwraca mi: ile % VAR1 = 1 ile % VAR2 = 1 ile % VAR3 = 1 Jak coś takiego zrobić w jednym zapytaniu? -------------------- neverever
|
|
|
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
nie bardzo czaje. napisałeś tak co te pola trzymaja ze nie wiem o co chodzi...
nie mozna po prostu: id | text 1 | jakis text 2 | jakis text 2 ? a co do problemu to strzelam bo nie wiem do końca o co chodzi: chcesz obliczyć jakim procentem całości jest var1 = 1? to tu się matematyka kłania taka jeszcze z podstawówki. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 44 Dołączył: 17.02.2004 Skąd: Wieliczka Ostrzeżenie: (10%) ![]() ![]() |
już wyjaśniam:
mam tabelę o takiej postaci: TYP | PODTYP | VAR1 | VAR2 | VAR3 ------------------------------------------- 99 | 34 | 1 | 2 | 1 10 | 13 | 1 | 2 | 1 99 | 34 | 1 | 1 | 1 99 | 34 | 2 | 2 | 1 26 | 15 | 2 | 2 | 1 99 | 34 | 1 | 2 | 2 99 | 34 | 1 | 2 | 1 ... teraz chcę sobie wybrać np. TYP=99 i PODTYP=34 - w bazie jest jakaś grupa rekordów spełniających ten warunek -powiedzmy 450rekordów. Teraz chcę by mi zwróciło procentowo jaka część tej grupy w VAR1 ma status =1, podobnie dla VAR2 i VAR3 Ja wiem że % to prosta matematyka i wiem jak się je liczy -tylko mam kłopot ze stworzeniem jednego sensownego zapytania które by to realizowało. W dużym uproszczeniu taki SELECT ile, p1, p2, p3 FROM tabela WHERE Typ=99 AND PODTYP=34 -gdzie: ile=liczba zwróconych rekordów, p1=(ileVAR1=1/ile)*100, p2=(ileVAR2=1/ile)*100, p3=(ileVAR3=1/ile)*100 Jaśniej już chyba nie umiem tego wyłożyć. Tylko jak to w jednym zapytaniu upchnąć? -------------------- neverever
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Pisane z palca. Nie jest to w jednym zapytaniu, ale wydajniej niż robić podzapytanie do każdej kolumny. Jeszcze to sprawdzę. edit: możesz jeszcze coś z tym kombinować:
Jeśli koniecznie chcesz w jednym, to zmień @ile na count(kolumna). Ale to wyliczy tylko 0/1. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
nie wiem czy dobrze myśle ale do obliczenia wartości procentowej jednego pola nie trzeba zrobić tak:
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 44 Dołączył: 17.02.2004 Skąd: Wieliczka Ostrzeżenie: (10%) ![]() ![]() |
mmmmm... bliżej, ale jeszcze chyba nie to.
tych p1, p2 i p3 to ja faktycznie nie mam, to tylko przykład co chciał bym uzyskać. to p1 w zamierzeniu stanowić by miało: SELECT COUNT(*) FROM tabela WHERE TYP=99 AND PODTYP=34 AND VAR1=1 dzielone na SELECT COUNT(*) FROM tabela WHERE TYP=99 AND PODTYP=34 to wszystko *100 i na koniec zaokrąglone. -analogicznie p2 i p3 Wracając jeszcze do wyjaśnienia. Mam w bazie przykładowo dajmy 6710 rekordów, z czego 450 spełnia warunek WHERE TYP=99 AND PODTYP=34 Teraz na te 450, jest 20 rekordów gdzie VAR1=1, 225 z VAR2=1 i 110 z VAR3=1 zatem obliczając tu % - wzór: (ile/zilu)*100 powinienem dostać tutaj po zaokrągleniu dla VAR1 4%, dla VAR2 50% i dla VAR3 24% Nie jest to więc takie proste jak by się wydawało, przynajmniej dla mnie. ![]() Na upartego to mogę to w oddzielnych zapytaniach powyciągac i % już w php obliczyć ![]() No ale może ktoś podsunie jeszcze jakieś rozsądne rozwiązanie. -------------------- neverever
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
dostosuj sobie -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:09 |