2017-11-22 1 views
0

をしたクエリに対する句を作成する必要があります。私は、私はこのコードを持っていると私は、MySQLについてそんなに知っているし、結果をフィルタリングする必要はありません

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 

このコードの復帰この:

enter image description here

私は唯一の値を取得したいと思い40,92

は、誰かが私を助けてもらえますか?あなたがしたいように見える

+0

。適切にフォーマットしてください。あなたは、画像を使って何を行うことは困難であるとして、多くのことができます、画像の代わりにフラットな形式で、関連するサンプル/結果データを追加することができ – jarlh

+1

場合。 [質問をしたときにSO上でコードの画像をアップロードしていないのはなぜ**?**]これは(コードのみに適用されません)を参照してください(https://meta.stackoverflow.com/questions/285551/why-not-upload -images・オブ・コード上、それほどとき-の提示--質問/ 285557#285557)あなたはまた、作業を作成するために、このような[** SQLFiddle **](http://sqlfiddle.com)などのツールを使用することができますあなたの問題のデモ。 – Nope

+2

'59.08'より' 40.92'を選んだ理由は何ですか? –

答えて

1

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'; 

私はperiodoを想定し、日付と標準を使用し、非あいまいな日付形式。

するには、クエリを短縮することができ:左はSQLは非常に読みにくいです正当化

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'; 
関連する問題