Sau hai câu trả lời mà tôi nhận được (không câu nào hoàn chỉnh nên tôi đã viết câu trả lời của riêng mình), những gì cuối cùng tôi đã làm là như sau:
UPDATE Table AS target
INNER JOIN
(
select category, appearances_sum
from Table T inner join (
select category as cat, sum(appearances) as appearances_sum
from Table
group by cat
) as agg
where T.category = agg.cat
group by category
) as source
ON target.category = source.category
SET target.probability = target.appearances / source.appearances_sum
Nó hoạt động rất nhanh chóng. Tôi cũng đã thử với truy vấn con tương quan nhưng nó chậm hơn nhiều (đơn hàng có độ lớn), vì vậy tôi đang gắn bó với phép nối.