Ilość wartości dodatnich i ujemnych

0

Mam taką tabelę:

id, miejsce, temp

Chciałbym z niej wyciągnąć ilość temperatur ujemnych i dodatnich dla danego miajsca w takiej postaci:
temperatury ujemne - ilość pomiarów
temperatury dodatnie - ilość pomiarów

Próbowałem mniej więcej w ten sposób ale to nie załatwia kompletnie sprawy nawet dla temp dodatnich:

SELECT SUM(ilosc) FROM (SELECT COUNT(temp) AS ilosc) FROM  `tabela` WHERE miejsce='M2', temp BETWEEN 0 AND 35 GROUP BY temp ORDER BY ilosc DESC

Jak najlepiej obsłużyć wszystkie powyższe założenia? Prosze o pomoc.

0

Nie wystarczy proste

SELECT count(temp) FROM tabela WHERE miejsce='M2' AND temp > 0

?

0
Patryk27 napisał(a):

Nie wystarczy proste

SELECT count(temp) FROM tabela WHERE miejsce='M2' AND temp > 0

?

W tym momencie obsługujemy tylko temperatury dodatnie i nie sumujemy ich ilości, tylko każdy pomiar dodajemy do siebie. Generalnie chodzi o to aby z danych stworzyć wykres kołowy - procent temperatur dodatnich i procent temperatur ujemnych. Dlatego potrzebuje to w takiej postaci
ujemne - ilość odczytów temp. -
dodatnie - ilość odczytów temp. +

Edit:
w ten sposób moge załatwić ilość dodatnich:

SELECT COUNT( temp ) AS ilosc_dodatnich
FROM  `tabela` 
WHERE miejsce =  'M2'
AND temp >0

tylko czy da sie tu jakoś upchać 2 założenie dla ujemnych? Czy lepiej w 2 osobnych zapytaniach to robić?

1
 select COUNT(*)
FROM `tabela` WHERE miejsce='M2' and temp => 0
union
select COUNT(*)
FROM `tabela` WHERE miejsce='M2' and temp < 0
0

Działa:) Zmienić trzeba było jeden mały detal na

>=
1

ech...

select sum(case when temp >= 0 then 1 else 0 end) dodatnie, sum(case when temp < 0 then 1 else 0 end) ujemne, miejsce from tabela group by miejsce

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