決済ログ(payments)テーブルがあります。決済を試みるたびに 1 行が追加され、各行は 決済手段(method)、成否(status: success または failed)、金額(amount)、時刻を 持ちます。 決済手段ごとの成功率(%)を求める SELECT 文を 1 つ書いてください。成功率とは、その手段の 全決済のうち成功した決済が占める割合をパーセントで表した値です。結果は 2 つのカラムで 出します: - method : 決済手段 - success_rate : その手段の成功率(%) 手段名の昇順で並べてください。solution.sql にクエリを書き、「テスト実行」を押すと実際の データベースで実行され、結果の表が表示されます。
PostgreSQL で決済ログから手段ごとの成功率(%)を求める SELECT 文を書く問題です。 決済記録のテーブルがデータとともに用意されており、「テスト実行」を押すと書いた クエリが本物のデータベースで実行され、結果の表が表示されます。結果は 2 列で、 1 列は決済手段、もう 1 列はその手段の成功率です。
この問題は「割合を出すとき、何で割るかによって答えが丸ごと変わる」を扱います。 件数を数えて割合を求めるクエリは一見正しく見えても、割る 2 つの値の性質によって、 ぴったりした値ではなく粗い値で出ることがあります。こうしたクエリを信じる前に、 表をざっと眺めるだけでなく、割り切れない割合が出るべき箇所でも実際の値が正しく 出るか、実際に動かして自分の目で確かめる必要があります。