2011-07-29 16 views
-4

私はmysql5を使用しています。SQLリクエストを使用してパーセンテージを計算する方法

SQLリクエストを使ってパーセンテージを計算したいのですが、できませんでした。

各環境のパーセンテージを計算したいが、私はちょうど環境に対して パーセンテージを計算することができる。

私は2つのSQL文を書いています.1つはOKテストの成功テスト数を返し、2つ目は成功テストの合計数を返します。

それぞれ正常に動作しますが、同じステートメントでパーセントを計算することはできませんでした。

最初のSQL文:

SELECT count(result.success), 
     result.RESULT_ENV 
FROM result, 
    scenario, 
    env 
WHERE result.RESULT_ENV = env.ENV_URL 
AND scenario.PHASE_ID = result.RESULT_PHASE 
AND scenario.PHASE_ID = "availibility" 
AND result.TIME BETWEEN '2011-07-14 12:00:00' AND '2011-07-15 10:12:59' 
AND result.TIME NOT BETWEEN 
    (
     SELECT MW_DB 
     FROM mw 
     WHERE MW_DB BETWEEN '2011-07-14 12:00:00' AND '2011-07-15 10:12:59' 
    ) AND 
    (
     SELECT MW_DF 
     FROM mw 
     WHERE MW_DB BETWEEN '2011-07-14 12:00:00' AND '2011-07-15 10:00:55' 
    ) 
AND result.SUCCESS = "ok" 
GROUP BY result.RESULT_ENV 

戻る:

number |  RESULT_ENV 
--------+------------------ 
    6  | http://somip1 
    1  | http://somip2 

二SQL文:

SELECT count(result.success), 
     result.RESULT_ENV 
FROM result, 
    scenario, 
    env 
WHERE result.RESULT_ENV = env.ENV_URL 
AND scenario.PHASE_ID = result.RESULT_PHASE 
AND scenario.PHASE_ID = "availibility" 
AND result.TIME BETWEEN '2011-07-14 12:00:00' AND '2011-07-15 10:12:59' 
AND result.TIME NOT BETWEEN 
    (
     SELECT MW_DB 
     FROM mw 
     WHERE MW_DB BETWEEN '2011-07-14 12:00:00' AND '2011-07-15 10:12:59' 
    ) AND 
    (
     SELECT MW_DF 
     FROM mw 
     WHERE MW_DB BETWEEN '2011-07-14 12:00:00' AND '2011-07-15 10:00:55' 
    ) 
GROUP BY result.RESULT_ENV 

戻る:

number |  RESULT_ENV 
--------+------------------ 
    8  | http://somip1 
    2  | http://somip2 

結果は次のようになります。

percent |  RESULT_ENV 
--------+------------------ 
    75 | http://somip1 
    50 | http://somip2 
+4

完全に言及されていない質問です。答えることはできません。 –

答えて

0

あなたはそのようなCASE statementを使用する必要があります。

(100 * SUM(CASE WHEN result.SUCCESS = 'ok' THEN 1 ELSE 0))/COUNT(result.success) 

次に、あなたのクエリがそのようなものでなければなりません:

SELECT (100 * SUM(CASE WHEN result.SUCCESS = 'ok' THEN 1 ELSE 0))/COUNT(result.success), 
     result.RESULT_ENV 
FROM result, 
    scenario, 
    env 
WHERE result.RESULT_ENV = env.ENV_URL 
AND scenario.PHASE_ID = result.RESULT_PHASE 
AND scenario.PHASE_ID = "availibility" 
AND result.TIME BETWEEN '2011-07-14 12:00:00' AND '2011-07-15 10:12:59' 
AND result.TIME NOT BETWEEN 
    (
     SELECT MW_DB 
     FROM mw 
     WHERE MW_DB BETWEEN '2011-07-14 12:00:00' AND '2011-07-15 10:12:59' 
    ) AND 
    (
     SELECT MW_DF 
     FROM mw 
     WHERE MW_DB BETWEEN '2011-07-14 12:00:00' AND '2011-07-15 10:00:55' 
    ) 
GROUP BY result.RESULT_ENV 

See the doc

+0

、ありがとうございます:) – rym

関連する問題