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