1) mysql> SELECT COUNT(*) FROM (SELECT 1 FROM abuse_filter_history GROUP BY afh_filter) as filters; +----------+ | COUNT(*) | +----------+ | 50 | +----------+ 1 row in set (0.00 sec) 2) mysql> SELECT abusefilter_hit.count/all_edits.count as abusefilter_triggered FROM (SELECT edits.count + disallowed.count as count FROM (SELECT COUNT(*) as count FROM recentchanges) as edits, (SELECT COUNT(*) as count FROM abuse_filter_log WHERE afl_timestamp > (SELECT MIN(rc_timestamp) FROM recentchanges) AND afl_actions LIKE "%disallow%") as disallowed) as all_edits, (SELECT COUNT(*) as count FROM abuse_filter_log WHERE afl_timestamp > (SELECT MIN(rc_timestamp) FROM recentchanges)) as abusefilter_hit; +-----------------------+ | abusefilter_triggered | +-----------------------+ | 0.0073 | +-----------------------+ 1 row in set (0.19 sec) 3) mysql> SELECT afh_user_text, COUNT(*) FROM abuse_filter_history INNER JOIN (SELECT MIN(afh_id) as id FROM abuse_filter_history GROUP BY afh_filter) as first_edit ON afh_id = first_edit.id GROUP BY afh_user_text; +----------------+----------+ | afh_user_text | COUNT(*) | +----------------+----------+ | Billinghurst | 1 | | Bsadowski1 | 1 | | Dferg | 7 | | Herbythyme | 4 | | Hillgentleman | 1 | | Jafeluv | 1 | | Kanonkas | 1 | | MZMcBride | 1 | | Matanya | 1 | | Mike.lifeguard | 19 | | Shizhao | 3 | | Trijnstel | 6 | | VasilievVV | 1 | | Vituzzu | 3 | +----------------+----------+ 14 rows in set (0.00 sec) 4) mysql> SELECT afh_filter, afh_user_text as creator, abusefilter_hit.count/all_edits.count as abusefilter_triggered FROM (SELECT edits.count + disallowed.count as count FROM (SELECT COUNT(*) as count FROM recentchanges) as edits, (SELECT COUNT(*) as count FROM abuse_filter_log WHERE afl_timestamp > (SELECT MIN(rc_timestamp) FROM recentchanges) AND afl_actions LIKE "%disallow%") as disallowed) as all_edits, abuse_filter_history INNER JOIN (SELECT MIN(afh_id) as id FROM abuse_filter_history GROUP BY afh_filter) as first_edit ON afh_id = first_edit.id LEFT JOIN (SELECT COUNT(*) as count, afl_filter FROM abuse_filter_log WHERE afl_timestamp > (SELECT MIN(rc_timestamp) FROM recentchanges) GROUP BY afl_filter) as abusefilter_hit ON abusefilter_hit.afl_filter = afh_filter GROUP BY afh_filter; +------------+----------------+-----------------------+ | afh_filter | creator | abusefilter_triggered | +------------+----------------+-----------------------+ | 1 | Hillgentleman | NULL | | 2 | Mike.lifeguard | NULL | | 3 | Mike.lifeguard | NULL | | 4 | Mike.lifeguard | NULL | | 5 | Mike.lifeguard | NULL | | 6 | Mike.lifeguard | 0.0001 | | 7 | Mike.lifeguard | 0.0009 | | 8 | Mike.lifeguard | NULL | | 9 | Mike.lifeguard | NULL | | 10 | Mike.lifeguard | NULL | | 11 | Mike.lifeguard | 0.0000 | | 12 | Kanonkas | NULL | | 13 | Shizhao | NULL | | 14 | Shizhao | NULL | | 15 | Shizhao | NULL | | 16 | Mike.lifeguard | NULL | | 17 | Mike.lifeguard | NULL | | 18 | Mike.lifeguard | NULL | | 19 | Mike.lifeguard | NULL | | 20 | Mike.lifeguard | NULL | | 21 | Mike.lifeguard | NULL | | 22 | Mike.lifeguard | NULL | | 23 | Dferg | NULL | | 24 | Dferg | NULL | | 25 | Mike.lifeguard | NULL | | 26 | Dferg | NULL | | 27 | Dferg | NULL | | 28 | Mike.lifeguard | NULL | | 29 | Dferg | NULL | | 30 | VasilievVV | NULL | | 31 | Dferg | 0.0001 | | 32 | Bsadowski1 | NULL | | 33 | Matanya | NULL | | 34 | Trijnstel | NULL | | 35 | Trijnstel | 0.0004 | | 36 | Trijnstel | 0.0007 | | 37 | Trijnstel | 0.0001 | | 38 | Trijnstel | 0.0001 | | 39 | Jafeluv | 0.0023 | | 40 | Dferg | 0.0001 | | 41 | Vituzzu | NULL | | 42 | MZMcBride | NULL | | 43 | Trijnstel | 0.0010 | | 44 | Herbythyme | 0.0005 | | 45 | Vituzzu | 0.0002 | | 46 | Herbythyme | NULL | | 47 | Herbythyme | NULL | | 48 | Vituzzu | NULL | | 49 | Billinghurst | 0.0005 | | 50 | Herbythyme | 0.0003 | +------------+----------------+-----------------------+ 50 rows in set (0.02 sec)