Announcement

Collapse
No announcement yet.

Unterschiedliche Werte Zählen und Anzahl vergleichen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Unterschiedliche Werte Zählen und Anzahl vergleichen

    Hallo zusammen,

    ich habe eine Tabelle, in der von einem Datenerfassungsmodul die Stillstandszeiten von angeschlossenen Maschinen je nach Stillstandsgrund mit einer bestimmten Stillstandsnummer abgelegt werden.

    Das sieht dann z.b. in etwa so aus:

    Maschinennr, Stillstandsgrund, Dauer in Sekunden
    15,20,27
    18.20.19
    15.21.39
    15.21.17
    18,19,63
    18,20,17
    18,21,53

    Ich möchte nun eine Abfrage erstellen, die mir die Maschinennr und die Anzahl bestimmter zusammengefasster Stillstandsgründe dazu ausgibt.
    Im Konkreten Besispiel also etwa eine Ergebnismenge mit 3 Spalten:
    Spalte 1: Maschinennr
    Spalte 2: Anzahl aller Stillstände mit der Stillstandsnummer 20
    Spalte 3: Anzahl aller übrigen Stillstände

    Also etwa so:
    Maschinennr, Stillst20, NichtStillst20
    15,1,2
    18,2,2

    Wie bekomm ich das hin?

  • #2
    [HIGHLIGHT="SQL"]SELECT Maschinennr
    , COUNT (CASE WHEN Stillstandsgrund = 20 THEN 1 ELSE 0 END) AS Stillst20
    , COUNT (CASE WHEN Stillstandsgrund != 20 THEN 1 ELSE 0 END) AS NotStillst20
    FROM Tabelle
    GROUP BY Maschinennr[/HIGHLIGHT]

    Comment


    • #3
      Ebis, und schon wieder ... SUM und nicht COUNT!
      Olaf Helper

      <Blog> <Xing>
      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

      Comment


      • #4
        Originally posted by O. Helper View Post
        Ebis, und schon wieder ... SUM und nicht COUNT!
        hast ja recht

        Comment


        • #5
          Heissen Dank!

          Comment


          • #6
            Hi nochmal,
            Wie gesagt bin ich super dankbar für die Antwort, aber ein Frage hätte ich jetzt trotzdem noch:
            Gibt es da vielleicht sogar noch eine Möglichkeit den ganzen Zählvorgang auf die letzten 1000 Einträge zu beschränken?

            Comment


            • #7
              dafür gibts eine Top-N analyse. Wie genau das geht hängt von der Datenbank ab. Wenn Du aber keine Eintragungsdatum gespeichert hast kannst Du nicht die letzten 1000 finden, da die Daten in einer DB Standardmäßig unsortiert sind.

              Comment


              • #8
                Ein Eintragszeitstempel ist vorhanden - hatte ich nur zur Erklärung des ursprünglichen Problems nicht erwähnt.
                Das ganze soll in einer Firebird 2.1 Datenbank laufen.
                Wie ich da z.B. die letzten 1000 Einträge ausgebe ist mir schon klar, aber wie ich den oben genanten Zählvorgang auf die letzten 1000 Eintrage beschränke weiss ich halt nicht .

                Comment


                • #9
                  [highlight=sql]
                  SELECT *
                  FROM
                  (
                  SELECT top 1000 *
                  FROM Tabelle
                  )
                  [/highlight]

                  Also grob über ein Subselect was Dir die Daten vorfiltert. Wenn es keine Subselect gibt kannst Du Dir auch ein View erzeugen was die Top 1000 enthält.

                  Comment


                  • #10
                    Super!!

                    Genau das wars - sieht zwar in Firebird etwas anders aus, aber das Prinzip ist genau das, das ich gesucht habe.

                    Danke!

                    Comment

                    Working...
                    X