Naps: GESTUTZTMITTEL in MySQL

Hi,

gibt es die Excel-Funktion GESTUTZTMITTEL auch in MySQL? Oder wie könnte ich sonst noch zum selben Ergebnis kommen?

Danke!
MfG Naps

  1. Moin

    gibt es die Excel-Funktion GESTUTZTMITTEL auch in MySQL? Oder wie könnte ich sonst noch zum selben Ergebnis kommen?

    Eine direkte funktion ist mir nicht bekannt. Du kannst aber 2 subselects in der bedingung mit dem höchst und niedrigstwert als ausschlusskriterium vereinbaren

    Ungefähr so

    Select avg(zahl) from table where zahl != (Select zahl from table order by zahl desc limit 0,1) and zahl != (select zahl from table order by zahl asc limit 0,1)

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
    ### Henry L. Mencken ###
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
    ### Viktor Frankl ###
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    1. Moin

      Oh, ich vergas die Codeformatierung

        
      SELECT AVG(zahl)  
      FROM `table`  
      WHERE  
      zahl != (SELECT zahl FROM `table` ORDER BY zahl DESC LIMIT 0,1)  
      AND  
      zahl != (SELECT zahl FROM `table` ORDER BY zahl ASC LIMIT 0,1)  
      
      

      Gruß Bobby

      --
      -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
      ### Henry L. Mencken ###
      -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
      ### Viktor Frankl ###
      ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
      1. SELECT AVG(zahl)
        FROM table
        WHERE
        zahl != (SELECT zahl FROM table ORDER BY zahl DESC LIMIT 0,1)
        AND
        zahl != (SELECT zahl FROM table ORDER BY zahl ASC LIMIT 0,1)

          
        Danke, so ungefähr habe ich mir das auch vorgestellt. Gibt es eine simple Möglichkeit wie ich nicht nur den größten und kleinsten Wert ausschließe sondern z.B. 10% der Min- und 10% der Max-Werte?  
          
          
        MfG Naps
        
        1. Moin

          Gibt es eine simple Möglichkeit wie ich nicht nur den größten und kleinsten Wert ausschließe sondern z.B. 10% der Min- und 10% der Max-Werte?

          Da ist die Frage ob 10% an der Anzahl oder an den Werten gemessen werden sollen.
          So oder so,Einfach sollte dies nicht sein. Also um deine FRage zu beantworten. Aus meiner Sicht heraus gibt es KEINE simple Lösung. Ich lass mich aber gern eines besseren belehren.

          Gruß Bobby

          --
          -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
          ### Henry L. Mencken ###
          -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
          ### Viktor Frankl ###
          ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
          1. Moin

            Aus meiner Sicht heraus gibt es KEINE simple Lösung. Ich lass mich aber gern eines besseren belehren.

            Interessehalber hab ich jetzt mal kurz ne Lösung gesucht und sogar gefunden. So schwer ist das gar nicht

              
            SELECT AVG(zahl) FROM `table`,  
            (SELECT @row:=0) r  
            WHERE (@row:=@row+1)  
            BETWEEN  
            ((Select COUNT(zahl) FROM `table`) * 0.1 )  
            AND  
            ( (Select COUNT(zahl) FROM `table`) - ( (Select COUNT(zahl) FROM `table`) * 0.1 ) )  
            ORDER BY zahl ASC  
            
            

            @row ist dabei die Zeilennummer die hochgezählt wird als Variable. Nun braucht man nur die Gesamtanzahl (COUNT (zahl)) und kann dort eine Prozentzahl abziehen (0.1 = 10%)

            Damit kann man, wenn man die Tabelle Aufsteigend sortiert hat, alle Werte erfassen, deren Zeilennummer den Vorgaben entsprechen.

            Ich bin grad etwas selbst überrascht wie einfach dies zu lösen ist.

            Gruß Bobby

            --
            -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
            ### Henry L. Mencken ###
            -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
            ### Viktor Frankl ###
            ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
            1. Moin

              Ich bin grad etwas selbst überrascht wie einfach dies zu lösen ist.

              huiuiuiui Es geht noch einfacher

                
              SELECT AVG( zahl )  
              FROM  
              `table`, ( SELECT @row:=0 ) r, ( SELECT @rows:=COUNT( zahl ) FROM `table` ) p  
              WHERE  
              ( @row:=@row + 1 )  
              BETWEEN ( @rows * 0.1 ) AND ( @rows - ( @rows * 0.1 ) )  
              ORDER BY zahl ASC  
              
              

              Gruß Bobby

              --
              -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
              ### Henry L. Mencken ###
              -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
              ### Viktor Frankl ###
              ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
              1. Moin

                Ich weiß, ich führe Selbstgespräche. Mein Drang zur Optimierung ist aber gerade mal geweckt.

                Nun aber die für mich handlichste Lösung:

                  
                SELECT AVG( zahl )  
                FROM  
                `table`, ( SELECT @row:=0, @rows:=COUNT( zahl ) FROM `table` ) r  
                WHERE  
                ( @row:=@row + 1 )  
                BETWEEN ( @pct:=@rows * 0.1 ) AND ( @rows - @pct )  
                ORDER BY zahl ASC  
                
                

                Vorteil: nur noch an einer Stelle muss der Prozentsatz angepasst werden. So, nun aber gut zu dem Thema. Es sei denn es hat noch jemand eine weltbewegende Möglichkeit zur Verbesserung der Abfrage. :)

                Gruß Bobby

                --
                -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
                ### Henry L. Mencken ###
                -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
                ### Viktor Frankl ###
                ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
                1. Moin

                  AHHHHHHHHH

                    
                  SELECT AVG( zahl )  
                  FROM  
                    `table`,  
                    ( SELECT @row:=0, @pct:=( @rows:=COUNT( zahl ) ) * 0.1 FROM `table` ) r  
                  WHERE  
                    ( @row:=@row + 1 )  
                    BETWEEN  
                      @pct AND ( @rows -@pc t)  
                  ORDER BY id ASC  
                  
                  

                  Gruß Bobby

                  --
                  -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
                  ### Henry L. Mencken ###
                  -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
                  ### Viktor Frankl ###
                  ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
                  1. Moin

                    letzte Korrektur:

                      
                    SELECT AVG( zahl )  
                    FROM  
                      `table`,  
                      ( SELECT @row:=0, @pct:=( @rows:=COUNT( zahl ) ) * 0.1 FROM `table` ) r  
                    WHERE  
                      ( @row:=@row + 1 )  
                      BETWEEN  
                        @pct AND ( @rows - @pct )  
                    ORDER BY zahl ASC  
                    
                    

                    Gruß Bobby

                    --
                    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
                    ### Henry L. Mencken ###
                    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
                    ### Viktor Frankl ###
                    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
                    1. SELECT AVG( zahl )
                      FROM
                        table,
                        ( SELECT @row:=0, @pct:=( @rows:=COUNT( zahl ) ) * 0.1 FROM table ) r
                      WHERE
                        ( @row:=@row + 1 )
                        BETWEEN
                          @pct AND ( @rows - @pct )
                      ORDER BY zahl ASC

                        
                      Perfekt ;)  
                      Danke!  
                        
                      MfG Naps