Entweder oder Anbfrage

tomi707

Neuer Benutzer
Beiträge
1
Hallo Leute,


Mein Problem ist ich habe eine Tabelle in der die prozentuellen Verfügbarkeiten meiner Server geschrieben werden. Also wieviel Prozent der Zeit er UP und DOWN war.

Ich habe 3 Server und will daraufs einen Durschnitt der Verfügbarkeit bekommen.
Wäre ja nicht so schwer wenn nicht 2 Server im Cluster(Server1 und Server2) laufen.

D.h. auch wenn Server1 ausfällt und die beiden anderen weiterlaufen, hab ich für den Benutzer eine Verfügbarkeit von 100%


Jedoch hab ich noch keinen Weg gefunden das bei der AVG() Funktion zu berücksichtigen.

Hoffe ihr könnt mir da helfen.

Tabelle sieht ca so aus

Code:
Date | Host | % UP | % DOWN |
----------------------------------
20.02.10 | Server1 | 0 | 100 |
20.02.10 | Server2 | 100 | 0 |
20.02.10 | Server3 | 100 | 0 |
21.02.10
....
 
Werbung:

thomas_w

Datenbank-Guru
Beiträge
104
AW: Entweder oder Anbfrage

Sofern es nur einen Datensatz pro Tag und Server gibt,
dann könnte es so klappen. Im Prinzip fehlt Dir eine Tabelle
die festlegt, welche Server einen Cluster bilden.

Code:
SELECT datum,
       CASE host
         WHEN 'Server1' THEN 'Cluster1'
         WHEN 'Server2' THEN 'Cluster1'           
         WHEN 'Server3' THEN 'Server3'           
        END AS host,
        CASE 
         WHEN SUM(up) > 100 THEN 100
         ELSE SUM(up)
        END AS verfuegbarkeit
  FROM serverlog
 GROUP BY datum,
          CASE host
           WHEN 'Server1' THEN 'Cluster1'
           WHEN 'Server2' THEN 'Cluster1'           
           WHEN 'Server3' THEN 'Server3'           
          END
ORDER BY datum,
          CASE host
           WHEN 'Server1' THEN 'Cluster1'
           WHEN 'Server2' THEN 'Cluster1'           
           WHEN 'Server3' THEN 'Server3'           
          END;
 
+------------+----------+----------------+
| datum      | host     | verfuegbarkeit |
+------------+----------+----------------+
| 2010-02-20 | Cluster1 |            100 |
| 2010-02-20 | Server3  |            100 |
+------------+----------+----------------+
2 rows in set (0.00 sec)
mysql>

Grüße
Thomas
 
Werbung:

thomas_w

Datenbank-Guru
Beiträge
104
AW: Entweder oder Anbfrage

Ergänzen hier noch meine Testdaten. Leider hat [Edit] bei der obigen Nachricht nicht mehr funktioniert.

Code:
CREATE TABLE serverlog (
 datum DATE NOT NULL,
 host VARCHAR(20) NOT NULL,
 up INT NOT NULL,
 down INT NOT NULL
);
INSERT INTO serverlog VALUES
( '2010-02-20', 'Server1', 0, 100),
( '2010-02-20', 'Server2', 100, 0),
( '2010-02-20', 'Server3', 100, 0);

Grüße
Thomas
 
Oben