Failed rate varies by method: upi 9.6% versus card 2.8%
- upi9.6%(3,315)
- netbanking5.3%(663)
- wallet3.7%(509)
- card2.8%(1,513)
Overall: 6.9%
upi is about 3.4 times card.
Show the working
What this is based on
- Based on 3,315 upi rows and 1,513 card rows.
- Random sampling alone would almost never produce a gap this large.
How sure we are: Strong evidence
Far larger than random ups and downs can explain.
The exact reasoning
Failed rate differs by method: upi is highest at 9.6%, card is lowest at 2.8% (238% apart).
- Based on 3,315 and 1,513 rows; the gap is about 10.1 standard errors, well beyond chance.
The numbers
| upi | 9.6% | 3,315 records |
|---|---|---|
| netbanking | 5.3% | 663 records |
| wallet | 3.7% | 509 records |
| card | 2.8% | 1,513 records |
Where the data came from
Your table “payments”. Nothing was changed; the analysis only read it.
The query that was run (read-only)
SELECT "method" AS grp, COUNT((CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END)) AS n, AVG((CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END)) AS mean, SUM((CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END)*(CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END)) AS sq, COUNT(CASE WHEN (CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END) > 0 THEN 1 END) AS npos, AVG(CASE WHEN (CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END) > 0 THEN ln((CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END)) END) AS lmean, SUM(CASE WHEN (CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END) > 0 THEN ln((CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END))*ln((CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END)) END) AS lsq FROM "payments" WHERE (CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END) IS NOT NULL AND "method" IS NOT NULL GROUP BY grp HAVING COUNT((CASE WHEN "status" IS NULL OR TRIM("status") = '' THEN NULL WHEN LOWER(TRIM("status")) = 'failed' THEN 1 ELSE 0 END)) >= 10