テスト データ/テーブルの URL は次のとおりです: http://sqlfiddle.com/#!2/56ffd4/1
私のテーブルは、次のテーブルの o/p を生成します。
(id, resolution)
('abc-123', 'fail'),
('abc-456', 'pass'),
('abc-789', 'pass'),
('abc-799', 'fail'),
('abc-800', 'pass'),
('abc-900', 'pass');
私のスクリプトo/pは:
id RESOLUTION TS @PREV C RES
abc-123 fail July, 02 2012 1 1 -
abc-456 pass July, 02 2012 2 0 50.00%
abc-789 pass July, 02 2012 1 0 100.00%
abc-799 fail July, 02 2012 1 1 -
abc-800 pass July, 02 2012 2 0 50.00%
abc-900 pass July, 02 2012 0 0 100.00%
ここにo/pスクリプトがあります:
SELECT st.*,
@prev:=@counter + 1,
@counter:= CASE
WHEN st.resolution = 'pass'
THEN 0
ELSE @counter + 1
END c,
CASE WHEN @counter = 0
THEN CONCAT(FORMAT(100/@prev, 2), '%')
ELSE '-'
END res
FROM so_test st, (SELECT @counter:=0) sc
上記の出力テーブルに 2 つの列を追加して、合格値と失敗値の出現回数を次のようにカウントする必要があります。
id RESOLUTION TS @PREV C fail pass
abc-123 fail July, 02 2012 1 1 - 1
abc-456 pass July, 02 2012 2 0 50.00% 1
abc-789 pass July, 02 2012 1 0 100.00% 1
abc-799 fail July, 02 2012 1 1 - 1
abc-800 pass July, 02 2012 2 0 50.00% 1
abc-900 pass July, 02 2012 0 0 100.00% 1