0

テーブル person( ID ,....., n_success,n_fails)があるとします。

お気に入り

 ID  n_success   n_fails

 a1      10         20
 a2      15         10
 a3      10         1

n_success/(n_success+n_fails)が最大の人のIDを返すクエリを作りたいです。

この場合の例、取得したい出力は次のとおりです。

  a3   0.9090909091

私はもう試した:

  select ID,(N_succes/(n_success + n_fails)) 'rate' from person

このクエリでは、各IDに相対的な成功率があります

  select ID,MAX(N_succes/(n_success + n_fails)) 'rate' from person

このクエリでは、1行だけ正しいレートですが、IDが正しくありません

どのようにできるのか?

4

4 に答える 4

1
select id, (n_success/(n_success + n_fails)) as rate from person
where (n_success/(n_success + n_fails)) = 
    (select max(n_success/(n_success + n_fails)) from person)
于 2013-05-26T22:28:48.733 に答える
1

MSSQL

SELECT TOP 1 ID, (`n_success` / (`n_success` + `n_fails`)) AS 'Rate' FROM persona
ORDER BY (n_success / (n_success + n_fails)) DESC

MySQL

SELECT `ID`, (`n_success` / (`n_success` + `n_fails`)) AS 'Rate' FROM `persona`
ORDER BY (`n_success` / (`n_success` + `n_fails`)) DESC
LIMIT 1
于 2013-05-26T21:59:56.543 に答える
1

SQL の方言によって異なりますが、T-SQL では次のようになります。

SELECT TOP 1 p.ID, p.n_success / (p.n_success + p.n_fails) AS Rate
FROM persona p
ORDER BY p.n_success / (p.n_success + p.n_fails) DESC

必要に応じて他の方言に変更できます (LIMIT 1たとえば、MySql や SQLite に使用します)。

于 2013-05-26T22:00:20.650 に答える