Ankündigung

Einklappen
Keine Ankündigung bisher.

Prozentualen Anteil von Umsatz errechnen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Prozentualen Anteil von Umsatz errechnen

    Code:
    DROP TABLE IF EXISTS `desd`;
    CREATE TABLE IF NOT EXISTS `desd` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `article_id` int(11) NOT NULL,
      `sold` int(11) NOT NULL,
      `VK` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
    
    --
    -- Daten für Tabelle `desd`
    --
    
    INSERT INTO `desd` (`id`, `article_id`, `sold`, `VK`) VALUES
    (1, 1, 1, 1),
    (2, 2, 1, 2),
    (3, 1, 2, 1),
    (4, 2, 2, 2),
    (5, 1, 2, 1);
    COMMIT;
    Code:
    SELECT
      article_id,
     SUM(sold * VK) as Umsatz,
      sold * VK / GESAMTUMSATZ * 100 as UmsAnteil
    FROM desd
    GROUP BY article_id
    Hallo,
    ich brauche den Umsatz Anteil der verkauften Artikel in Prozent, und weiß nicht, wie ich den Gesamtumsatz erhalten kan.

    article_id Umsatz UmsAnteil
    =====================
    1 5 x%
    2 6 x%
    Gesamtumsatz: 11

  • #2
    Code:
    test=*# select * from sold;
     id | article | sold | vk
    ----+---------+------+----
      1 |       1 |    1 |  1
      2 |       2 |    1 |  2
      3 |       1 |    2 |  1
      4 |       2 |    2 |  2
      5 |       1 |    2 |  1
    (5 rows)
    
    test=*# select article, sum(sold*vk) as umsatz, sum(sold*vk)::numeric / (select sum(sold*vk) from sold) as anteil from sold group by article;
     article | umsatz |         anteil         
    ---------+--------+------------------------
           1 |      5 | 0.45454545454545454545
           2 |      6 | 0.54545454545454545455
    (2 rows)
    Kann möglicherweise sogar schon MySQL, ich verwende was anderes ...
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Btw., daß MyISAM stinkender, radioaktiver Sondermüll aus dem letzten Jahrtausend ist hatte ich Dir glaube ich schon mal erklärt ...
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar


      • #4
        Ich hab's von Dir schon gelesen aber es war glaube ich nicht direkt auf mich bezogen und da habe ich beschlossen mich nicht angesprochen zu fühlen und das mal auf später zu verschieben
        Hast Du einen Link zur Info?
        Danke für den Code übrigens. Wie generierst Du Deine Ausgaben, das machst Du doch nicht von Hand, oder?

        Kommentar


        • #5
          Zitat von phpP Beitrag anzeigen
          Wie generierst Du Deine Ausgaben, das machst Du doch nicht von Hand, oder?
          Nein, die Ausgaben macht die Datenbank, ich erstelle nur die Abfrage.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Das hier meine ich:

            article | umsatz | anteil
            ---------+--------+------------------------
            1 | ....

            Kommentar


            • #7
              Und er schrieb doch:

              Zitat von akretschmer Beitrag anzeigen
              Nein, die Ausgaben macht die Datenbank,
              Das kann sogar die MySQL Konsole.
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Ich frage, weil das Ergebnis von phpMyAdmin sich hier nicht vernünftig reinkopieren lässt, da fehlen dann die Spaltenbezeichnungen. Diese Ausgabe kann man also aus der Konsole kopieren? Kenn ich kaum, weil ich mit der nicht arbeite.

                Kommentar


                • #9
                  Zitat von phpP Beitrag anzeigen
                  Ich frage, weil das Ergebnis von phpMyAdmin sich hier nicht vernünftig reinkopieren lässt, da fehlen dann die Spaltenbezeichnungen. Diese Ausgabe kann man also aus der Konsole kopieren? Kenn ich kaum, weil ich mit der nicht arbeite.
                  Mit phpMyAdmin wohl gar nicht. Dafür verwende am besten die Konsolenanwendung.

                  Gehört eigentlich zu den Grundlagen sich zumindest einmal mit der Konsolenanwendung zu beschäftigen. phpMyAdmin ist ein Klickibunti-Tool, das eine weitere Anwendungsschicht hinzufügt und man nur bedingt mitkriegt, was da eigentlich auf der Datenbankverbindung passiert. Fürs schnelle Zusammenklicken vielleicht praktisch, aber zum Lernen eher ungeeignet. Das ist etwa so, als würde man in einem Tesla mit Autopilot das Autofahren lernen.

                  Kommentar


                  • #10
                    Versuch mal ist nicht schwer.

                    Wenn du Win hast: https://stackoverflow.com/questions/...l-command-line
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Deine Datentypen und Bezeichner sind nicht korrekt.
                      VK steht für Verkaufspreis, du hast aber den Rest auf Englisch, dann nimm als Spaltenbezeichner auch die englische Abkürzung USP für unit sales price.
                      Einkauspreis wäre dann PP für purchase price, das sind die geläufigen Abkürzungen..
                      Da Preise auch Nachkommastellen haben können ist es besser hier auch mit Nachkommastellen zu arbeiten, also decimal oder numeric.
                      Für sold, also verkaufte Einheiten solltest du mit smallint unter Umständen auch hinkommen, dann da geht es bis 32.

                      Deine Tabelle bezeichnest du mit desd was ausser dir keiner weiss wofür es steht. Nimm immer aussagekräftige Namen oder geläufige Abkürzungen.
                      PHP-Code:
                      CREATE TABLE IF NOT EXISTS `desd` (   
                        `
                      idint(11NOT NULL AUTO_INCREMENT,   
                        `
                      article_idint(11NOT NULL,   
                        `
                      soldsmallint(6NOT NULL,   
                        `
                      uspdecimal(10,2NOT NULL,   
                        
                      PRIMARY KEY (`id`)
                      ENGINE=InnoDB DEFAULT CHARSET=utf8_general_ci
                      Zu Myisam lies mal hier: https://www.percona.com/blog/2016/10...-0-end-myisam/

                      Wenn du dich mit Mysql und der Sprache SQL nicht auskennst, ist jetzt der Zeitpunkt es zu lernen, damit du zukünftig solche Fehler nicht mehr machst.
                      Mysql Tutorial

                      Kommentar


                      • #12
                        #2 funktioniert natürlich nur dann, wenn die Tabelle tatsächlich "sold" heißt statt, wie beim TE, "desd". Unter MySQL funktioniert das Binden nicht, der Rest schon:
                        Code:
                        SELECT
                            article_id, 
                            sum(sold*vk) as umsatz, 
                            (sum(sold*vk) / (select sum(sold*vk) from desd)) as anteil 
                        FROM desd 
                        group by article_id;
                        Man sollte hier allerdings dem ganzen, wie auch im anderen Thread, eine Rundung gönnen:

                        Code:
                        SELECT
                            article_id, 
                            sum(sold*vk) as umsatz, 
                            round(sum(sold*vk) / (select sum(sold*vk) from desd),3) as anteil 
                        FROM desd 
                        group by article_id;
                        Insgesamt: Nachdem wir aus dem anderen Thread wissen, wie andere Tabellen bei dir aussehen: Dein Datenmodell ist absolut schlecht und birgt zahlreiche Aktualisierungsprobleme, aber auch Probleme, die die Darstellung von Sachverhalten erschweren, auf die es dir ankommt. Es gibt zahlreiche Redundanzen und Verstöße gegen das Normalisierungsmodell. Gut, muß man sich nicht dran halten, sollte man aber im eigenen Interesse schon tun.

                        Kommentar

                        Lädt...
                        X