2017-06-09 20 views
0

ここに初めてのので、どんな偽のパスでも許してください。私はコードの初心者としてSQLの限界について質問しました。私は必要とするものはかなり複雑だと考えています。SQL - クエリの最適なパフォーマンス番号を見つける方法

特定のクエリに最適なデータを自動的に見つけることは可能ですか?たとえば、次の列があるとします。

1)車両タイプ(テキスト)。車、バイク、バス

2)乗客数(数値)。 3)事故(ブール)にあった。 tまたはf

ここから、パーセンテージを取得したいと思います。だから、3人乗りの乗り物のみを選択すると、その合計の事故の何パーセントが占めているのか。

私はこれを1つにする方法や数学的に計算する方法を理解していますが、私の質問はこのプロセスを自動化して最適な数値を得る方法に関連しています。

この例では、私は車だけを見ていますが、最も多くの乗客が最も多くの事故をカバーしていますか?

現在のところ、私は現在番号で番号をテストしていますが、最適な番号を見つける方法はありますか?例のように0-7のときは簡単ですが、私は当然より広い範囲、さらには複数の範囲にも対処したいと思います。ドアの

4)番号(数値)EG-0-3

をカバーし、これらの二つの変数から数字の最適な組み合わせを見つける方法が次のようになります。たとえば、私たちは題した別の変数を追加すると言います最も高い割合の事故?

車で2人以上の乗客が車に乗っていると言うと、車のドアは3つあります。<変化の50%が本当だった

しかし、私たちはそれを車に変更すると、> 4人の乗客、< 3ドア。変化の80%が事実であった。

私はこれをうまく説明してくれることを願っています。私はこれがSQLで可能ではない可能性が高いことを理解していますが、これらの最適な数値を見つける別の方法はありますか?

ありがとうございます事前にありがとう

+0

いくつかのアプローチがありますが、最も簡単なのは、グループごとの事故数とグループ全体の合計を計算し、次に事故率の降順で計算することです。 –

+0

スローンはとても役に立ちました、ありがとう!私は今これをもっと引き継ぐことに興味があると思います... 1)私はどのように変数のグループでこれを行いますか?あなたは1人の乗客を見て、代わりに2人、3人、4人などを見ることができます:> 5と比較して> 4で見ることができます – Paddycat

+0

あなたはそれを実行すると(実際にまだ試しましたか?可能な結果。特定の値の組み合わせに制限する場合は、where句で指定します。 –

答えて

0

すべての可能性について回答します。上限句のみを表示するにはlimit句を追加し、特定の用語に限定するにはwhere節に追加します。

SELECT 
    `vehicle_type`, 
    `num_passengers`, 
    sum(if(`in_accident`,1,0)) as `num_accidents`, 
    count(*) as `num_in_group`, 
    sum(if(`in_accident`,1,0))/count(*) as `percent_accidents` 
FROM `accidents` 
GROUP BY `vehicle_type`, 
    `num_passengers` 
ORDER BY sum(if(`in_accident`,1,0))/count(*) 
+0

Gretaありがとう!!私はこれで何を見つけることができます! – Paddycat

+0

それがうまくいく場合は、その答えを忘れないようにしてください。 –

+0

項目(例:vehicle_type、num_doorsなど)を追加/変更すると、group by句の列と一致するようになります。 –

関連する問題