zliczenie ilości wystąpień w wierszu

0

Witam Mam pytanie w jaki sposób mogę zliczyć ilość wystąpień danej wartości w wyniku zapytania do bazy .
Przykład:
W wyniku zapytania otrzymujemy wiersz ( pola x1,x2,x3)
wartości x1=1 ,x2=5, x3=0.
Potrzebuję otrzymać w wyniku tylko informację ile jest pól wśród(x1,x2,x3) różnych od zera, czyli w tym przypadku chcę otrzymać tylko informację że ilość wartości >0 =2.

0

W klauzuli WHERE Twój warunek (czyli to co chesz zliczać), a w klazuli select funkcja agregująca count.

Pozdrawiam

0

No chyba nie do końca bo ja w select wywołam jeden wiersz i to jest poprawnie. A z tego wiersza muszę zliczyć ilość wystąpień wynik >o. Więc where chyba nie bardzo. Funkcja count zwróci mi ilość wierszy spełniających select. a ja potrzebuje ilość wystąpień w jednym wierszu. Chyba że się mylę.
Pozdrawiam

2

Jeżeli baza to MySQL możesz posłużyć się takim zliczaniem:

-- Testowa tabelka
create table test (id int not null auto_increment, f1 int null, f2 int null, f3 int null, primary key (id));
insert test(f1,f2,f3)values(1,2,3),(0,4,0),(3,1,0);

-- Właściwe zliczanie w wierszu o `id` = 1
select
if (t.f1 != 0, 1, 0) + if (t.f2 != 0, 1, 0) + if (t.f3 != 0, 1, 0) as non_zeros
from test t
where t.id = 1

Zakładając, że numerujesz wpisy z automatu w swojej tabeli.

0
kilmark napisał(a):

Witam Mam pytanie w jaki sposób mogę zliczyć ilość wystąpień danej wartości w wyniku zapytania do bazy .
Przykład:
W wyniku zapytania otrzymujemy wiersz ( pola x1,x2,x3)
wartości x1=1 ,x2=5, x3=0.
Potrzebuję otrzymać w wyniku tylko informację ile jest pól wśród(x1,x2,x3) różnych od zera, czyli w tym przypadku chcę otrzymać tylko informację że ilość wartości >0 =2.

Składnę będziesz musiał poprawić, ale generalnie można to zrobić tak:

select id, x1+x2+x3 from
(
select id, if x1=1 then 1 else 0 as x1, if x2=5 then 1 else 0 as x2, if x3=3 then 1 else 0 as x3 from table
);

Pozdrawiam

0

Dziękuje grzesiek51114 działa jak należy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1