1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Prozent berechnen

  • soad
  • 1. November 2006 um 17:29
  • Unerledigt
  • soad
    7
    soad
    Mitglied
    Punkte
    520
    Beiträge
    88
    • 1. November 2006 um 17:29
    • #1

    Hi,

    irgendwie steh ich grad an.Ich hab eigentlich eine relativ einfaches Problem und zwar möchte ich den prozentualen Anteil eines Wertes zur gesamten Tabelle berechnen, also:

    Erstmal die Häufigkeit des Wertes:

    SQL
    SELECT count(*) 
    FROM X
    WHERE Y=Z


    Dann die Gesamtanzahl der Tabelle:

    SQL
    SELECT count(*) 
    FROM X


    Und dann wäre die Berechnung: Ergebnis_des_ersten_SELECTS*100/Ergebnis_des_zweiten_SELECTS

    So, und meine Frage wäre jetzt :Kann man das Ganze auch in einem SELECT-Statement zusammenfassen?

  • Michi
    3
    Michi
    Mitglied
    Punkte
    85
    Beiträge
    17
    • 1. November 2006 um 18:39
    • #2

    es ist zwar in einem SELECT-Statement, aber mit Subqueries:
    wie z.B.

    SQL
    SELECT view1, view2
    FROM (SELECT count(*)
          FROM X) view1, 
         (SELECT count(*)
          FROM X
          WHERE X=Y) view2
    WHERE (view2 * 100 / view1) > 0;


    hoff es ist richtig.

  • NoUse
    7
    NoUse
    Mitglied
    Punkte
    425
    Beiträge
    67
    • 1. November 2006 um 18:49
    • #3

    Ich würds ein bisschen anders machen:

    Code
    select count(*)/(select count(*) from x) from x where y=z

    edit: wenn du das aber in einer programmiersprache verwendest, wärs vielleicht effizienter, zuerst die Gesamtanzahl der Zeilen zu holen und dann den SQL-String im Programm zusammenzubauen, so in der Art

    x = (select count(*) from x) <= ist halt pseudocode jetzt
    y = "select count(*)/" + x + " from x where y = z"

  • soad
    7
    soad
    Mitglied
    Punkte
    520
    Beiträge
    88
    • 1. November 2006 um 19:08
    • #4

    ja, mit subqueries hab ich eh gemeint :).

    Das einzige Problem ist, dass ich jetzt einen "Column not found: VIEW1"-Fehler bekomme. Komm grad drauf, dass SQL nicht grad meine Stärke is :shinner:...

  • Michi
    3
    Michi
    Mitglied
    Punkte
    85
    Beiträge
    17
    • 1. November 2006 um 19:46
    • #5

    hm... probier mal:

    SQL
    SELECT view1.anzahl, view2.vorkommen, view3.prozent
    FROM (SELECT count(*) anzahl
          FROM X) view1, 
         (SELECT count(*) vorkommen
          FROM X, Y
          WHERE X.a=Y.a) view2,
         (SELECT (view2.vorkommen * 100 / view1.anzahl) prozent) view3
    WHERE view3.prozent > 0;


    Somit wär's alles separat und doch in einem, obs funkioniert, kann ich nicht garantieren.

  • soad
    7
    soad
    Mitglied
    Punkte
    520
    Beiträge
    88
    • 1. November 2006 um 23:51
    • #6

    Danke erstmal, aber jetzt regt er sich auf, dass im letzten SELECT kein FROM steht. Wenn ich dann schreib FROM view1, view2, dann kennt er die Table anscheinend noch nicht

  • soad
    7
    soad
    Mitglied
    Punkte
    520
    Beiträge
    88
    • 1. November 2006 um 23:53
    • #7

    NoUse: Hab erst jetzt dein Posting gesehen, hast nur das *100 vergessen, aber es funktioniert perfekt!!

    DANKE, euch beiden :thumb: !!

  • Michi
    3
    Michi
    Mitglied
    Punkte
    85
    Beiträge
    17
    • 2. November 2006 um 00:26
    • #8
    Zitat von soad

    Danke erstmal, aber jetzt regt er sich auf, dass im letzten SELECT kein FROM steht. Wenn ich dann schreib FROM view1, view2, dann kennt er die Table anscheinend noch nicht

    stimmt, den FROM hab ich glatt übersehen...

    aber das würde gehen:

    SQL
    SELECT view1.anzahl, view2.vorkommen, (view2.vorkommen * 100 / view1.anzahl) prozent
    FROM (SELECT count(*) anzahl
          FROM X) view1, 
         (SELECT count(*) vorkommen
          FROM X, Y
          WHERE X.a=Y.a) view2;


    natürlich gehts alles in einem Select auch, wegen nachträgliche erweiterungen ist die ausführlichere version oft hilfreich.

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung