Ilość wartości dodatnich i ujemnych

Odpowiedz Nowy wątek
2014-12-14 14:34
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.

edytowany 3x, ostatnio: Sebastiano, 2014-12-14 14:35

Pozostało 580 znaków

2014-12-14 14:53
0

Nie wystarczy proste

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

?


edytowany 4x, ostatnio: Patryk27, 2014-12-14 14:55

Pozostało 580 znaków

2014-12-14 14:58
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ć?

edytowany 2x, ostatnio: Sebastiano, 2014-12-14 15:04

Pozostało 580 znaków

2014-12-14 15:02
_pytek
 select COUNT(*)
FROM `tabela` WHERE miejsce='M2' and temp => 0
union
select COUNT(*)
FROM `tabela` WHERE miejsce='M2' and temp < 0
A co będzie, gdy będziesz miał w tabeli 1 rekord dodatni i 1 ujemny? :) W M2 oczywiście - Marcin.Miga 2014-12-14 23:31

Pozostało 580 znaków

2014-12-14 15:11
0

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

>=

Pozostało 580 znaków

2014-12-14 15:24
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

Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
Zmienić dodatnie na nieujemne i będzie działać nawet zgodnie z opisami :) - Marcin.Miga 2014-12-14 23:30

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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