有一张表A
。它有两列seller_id
和cnt
+-----------+------+
| seller_id | cnt |
+-----------+------+
| 55 | 7 |
| 243 | 7 |
| 456 | 9 |
| 522 | 23 |
+-----------+------+
对于每个seller_id
和cnt
,我需要使用cnt
>来计算行的比例。当前cnt
目前我这样做:
SELECT
A.*,
1-(SELECT COUNT(*) FROM A WHERE cnt >= A.cnt )/(SELECT COUNT(*) FROM A )
FROM
A
但执行需要很长时间。
如何重写以更有效地执行?
更新 做一些有点帮助。但还是不够好。它仍然是N ^ 2次操作。
SELECT COUNT(*) FROM A into @count;
SELECT
A.*,
1-(SELECT COUNT(*) FROM A WHERE cnt >= A.cnt )/@count
FROM
A