2017-11-22 5 views
0

Ich habe diesen Code und ich weiß nicht so viel über mysql und muss ein Ergebnis filtern.Ich muss eine Klausel über die Abfrage, die ich habe

SELECT reinc, 
     Round((Count(reinc) * 1.0/(SELECT Count(1) 
            FROM `gi35` 
            WHERE fi_auto = 'S' 
              AND (uf = 'CE' 
                OR uf = 'MA' 
                OR uf = 'PI') 
              AND periodo = '01/10/2017')) * 100, 
     2) AS 
     porcento, 
     Count(reinc) 
FROM `gi35` 
WHERE fi_auto = 'S' 
     AND (uf = 'CE' 
       OR uf = 'MA' 
       OR uf = 'PI') 
     AND periodo = '01/10/2017' 
GROUP BY reinc 

dieser Code Rückkehr dies:

enter image description here

Ich mag nur den Wert 40,92

könnte mir jemand helfen bekommen würde?

+0

linksbündig SQL ist sehr schwer zu lesen. Machen Sie es leicht, Ihnen zu helfen, richtig zu formatieren! – jarlh

+1

Wenn Sie relevante Beispiel-/Ergebnisdaten in einem flachen Format anstelle eines Bildes hinzufügen können, das viel hilft, da ein Bild schwer zu handhaben ist. Sehen Sie dies (gilt nicht nur für den Code) [** Warum laden Sie nicht Bilder von Code auf SO hoch, wenn Sie eine Frage stellen? **] (https://meta.stackoverflow.com/questions/285551/why-not-upload -images-of-code-auf-so-wenn-eine-Frage stellen/285557 # 285557) Sie können auch Tools wie [** SQLFiddle **] (http://sqlfiddle.com) verwenden, um ein funktionierendes Programm zu erstellen Demo Ihres Problems, mit dem anderen dann herumspielen können. – Nope

+2

Was ist die Logik, warum Sie '40.92' über' 59.08' wählen? –

Antwort

1

Sie scheinen zu wollen:

SELECT Round(Count(*) * 1.0/
       (SELECT Count(*) 
       FROM `gi35` g2 
       WHERE g2.fi_auto = 'S' AND g2.uf IN ('CE', 'MA', 'PI') 
        g2.periodo = '2017-10-01' 
      ) * 100, 2 
      ) AS porcento 
FROM `gi35` g 
WHERE g.fi_auto = 'S' AND g.uf IN ('CE', 'MA', 'PI') AND 
     g.periodo = '2017-10-01' AND reinc = 'S'; 

Ich nahm periodo ein Datum ist und verwendet, um den Standard, nicht-mehrdeutige Datumsformat.

Sie könnten auch die Abfrage verkürzen:

SELECT Round(AVG(reinc = 'S') * 100, 2) AS porcento 
FROM `gi35` g 
WHERE g.fi_auto = 'S' AND g.uf IN ('CE', 'MA', 'PI') AND 
     g.periodo = '2017-10-01' AND reinc = 'S'; 
Verwandte Themen