User:Steinsplitter/queries
Jump to navigation
Jump to search
The database layout has been changed, therfore some querys listed on this page may be outdated. You can find recent examples of query's here: https://quarry.wmflabs.org/query/runs/all?published=true |
A few querys... See also https://quarry.wmflabs.org/Steinsplitter
commonswiki_p[edit]
Edits using COM:VFC[edit]
select rc_user_text,
COUNT(rc_comment) AS vfc_count
from recentchanges
where rc_comment like "%VisualFileChange%"
group by rc_user_text
order by vfc_count DESC;
Wrong delinks by commons delinker[edit]
SELECT rc_timestamp AS timestamp,
rc_user_text AS delinkerbot,
rc_comment AS delinkreason,
rc_namespace as namespace,
rc_title as pagename,
rc_this_oldid AS oldid
FROM recentchanges
WHERE rc_comment LIKE "%Unused_and_implausible%"
AND rc_user_text = "CommonsDelinker"
OR rc_user_text = "Dateientlinkerbot"
OR rc_user_text = "Filedelinkerbot"
ORDER BY timestamp DESC;
Edits on COM:QIC by IP's[edit]
SELECT rc_timestamp,
rc_user_text,
rc_title,
rc_this_oldid
FROM recentchanges
WHERE rc_title = "Quality_images_candidates/candidate_list"
AND rc_user = "0"
LIMIT 60;
All files with *all_rights_reserved* in exif[edit]
SELECT
CONCAT( 'File:', img_name) AS file,
img_user_text AS comuser,
user_editcount AS edits
FROM image
INNER JOIN user ON user_id = img_user
WHERE img_metadata LIKE "%all_rights_reserved%"
AND user_editcount < 88
ORDER BY comuser ASC;
BSicons protections[edit]
SELECT CONCAT( 'File:', page_title ) AS pageb
FROM page_restrictions
INNER JOIN page ON pr_page = page_id
WHERE page_title LIKE '%BSicon%';
Upload log conter[edit]
SELECT user.user_name, COUNT(logging.log_user) FROM user
INNER JOIN logging
ON logging.log_user = user.user_id
WHERE logging.log_type = "upload"
GROUP BY logging.log_user
ORDER BY COUNT(logging.log_user) DESC
Limit 100;
Uploads by users not in a local usergroup[edit]
SELECT
DATE_FORMAT(rc_timestamp, "%b %d %Y %h:%i %p") AS timestamp,
CONCAT( 'File:', rc_title) AS file,
rc_user_text as user,
user_editcount as editcount
FROM recentchanges
LEFT JOIN user_groups
ON rc_user=ug_user
INNER JOIN user
ON rc_user=user_id
WHERE ug_group IS NULL
AND rc_type = "upload"
ORDER BY rc_timestamp DESC
LIMIT 50;
Possible autopatrolled candidates[edit]
SELECT DISTINCT rc_user_text,
DATE_FORMAT(user_registration, "%Y-%m-%d") AS registration,
user_editcount,
IF(rc_user_text IN (
SELECT log_title
FROM logging
WHERE log_type = "block"
), "Yes", "No") AS blocked_prev
FROM recentchanges
LEFT JOIN user_groups
ON rc_user=ug_user
INNER JOIN user
ON rc_user=user_id
LEFT JOIN ipblocks_ipindex
ON rc_user=ipb_user
WHERE ug_group IS NULL
AND user_editcount > 1800
AND ipb_user IS NULL
ORDER BY user_editcount DESC;
Recent revision deletions[edit]
SELECT
DATE_FORMAT(rc_timestamp, "%b %d %Y %h:%i %p") AS tm,
rc_user_text,
rc_namespace AS ns,
rc_title,
rc_comment
FROM recentchanges
WHERE rc_log_type = "delete"
AND rc_log_action = "revision";
(C) finder using upload log & exif[edit]
SELECT
CONCAT( 'File:', img_name) AS file,
img_user_text AS user
FROM recentchanges
INNER JOIN image ON img_user = rc_user
WHERE img_metadata LIKE "%all_rights_reserved%"
AND rc_timestamp > DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -25 DAY), '%Y%m%d%H%i%s')
AND rc_log_type = "upload"
ORDER BY user ASC;
[edit]
SELECT
ipb_id AS blockid,
ipb_address AS user,
user_editcount AS editcount,
ipb_reason AS reason,
DATE_FORMAT(ipb_expiry, "%b %d %Y") AS expry,
ipb_by_text AS admin
FROM ipblocks
INNER JOIN user
ON user_id=ipb_user
WHERE ipb_auto = "0"
AND ipb_expiry NOT LIKE "infinity"
AND (
ipb_reason LIKE "%unfree files%"
OR ipb_reason LIKE "%files without source%"
OR ipb_reason LIKE "%files without licensing%"
OR ipb_reason LIKE "%Incorrectly licensing files%"
)
;
Declined filemove requests[edit]
SELECT
DATE_FORMAT(rc_timestamp, "%b %d %Y %h:%i %p") AS timestamp,
REPLACE(ug_group,'sysop','admin') AS usergroup,
rc_user_text AS user,
REPLACE( CONCAT( 'File:', rc_title),'_',' ' ) AS file,
rc_comment AS comment,
rc_this_oldid AS diff
FROM recentchanges
INNER JOIN
(
SELECT
ug_user,
ug_group
FROM user_groups
WHERE ug_group = "sysop"
OR ug_group = "filemover"
) AS ugu
ON rc_user = ug_user
WHERE rc_namespace = "6"
AND rc_source = "mw.edit"
AND (ug_group="sysop" OR ug_group="filemover")
AND rc_timestamp > DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -3 DAY), '%Y%m%d%H%i%s')
AND (
rc_comment LIKE "%No valid reason stated, see the [[COM:MOVE|rename guidelines]]%"
OR rc_comment LIKE "%No valid reason stated, see the rename guidelines%"
OR rc_comment LIKE "%see the [[COM:MOVE|rename guidelines]]%"
OR rc_comment LIKE "%see the [[COM:RENAME|rename guidelines]]%"
OR rc_comment LIKE "%see the [[COM:FR|rename guidelines]]%"
)
ORDER BY rc_timestamp DESC
LIMIT 45;
Recently active license reviewers with lr activity[edit]
SELECT DISTINCT
rc_user_text AS user,
REPLACE(ug_group,'sysop','admin') AS usergroup,
ug_bot AS bot
FROM recentchanges
INNER JOIN
(
SELECT
ug_user,
ug_group
FROM user_groups
WHERE ug_group = "sysop"
OR ug_group = "Image-reviewer"
) AS lrgroup /* is the user a lr or sysop? */
ON rc_user = ug_user
LEFT JOIN
(
SELECT
ug_user AS ug_bot_user,
ug_group AS ug_bot
FROM user_groups
WHERE ug_group = "bot"
) AS isbot /* is the user a bot? */
ON rc_user = ug_bot_user
WHERE rc_namespace = "6" /* only file namespace */
AND (ug_group="sysop" OR ug_group="Image-reviewer")
AND (
rc_comment LIKE "%icense review%" /* used by lr gadget*/
OR rc_comment LIKE "%LR passed%"
OR rc_comment LIKE "%: passed%" /* for lr bots */
)
ORDER BY rc_user_text ASC;
No TA action in the last 365 days[edit]
SELECT
user_name
FROM user_groups
INNER JOIN user
ON ug_user=user_id
WHERE ug_group = "translationadmin"
AND user_id NOT IN
(
SELECT DISTINCT
log_user AS q1
FROM logging
WHERE log_type = "pagetranslation"
AND log_timestamp > DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -365 DAY), '%Y%m%d%H%i%s')
)
AND user_id NOT IN
(
SELECT
ug_user AS ugsysop
FROM user_groups
WHERE ug_group = "sysop"
);
Most deleted files (exactly same, sha1)[edit]
SELECT COUNT(filearchive.fa_sha1) AS COUNT,
fa_sha1
FROM filearchive
GROUP BY filearchive.fa_name
ORDER BY COUNT DESC
LIMIT 50;
Uploads per month[edit]
SELECT
DATE_FORMAT(log_timestamp, "%Y-%M") AS raw,
DATE_FORMAT(log_timestamp, "%Y") AS y,
DATE_FORMAT(log_timestamp, "%M") AS m,
COUNT(log_id) AS uploads
FROM logging
WHERE log_type = 'upload'
GROUP BY raw;
MediaWiki edits by user[edit]
SELECT
rev_user_text AS user,
COUNT(rev_user_text) as count
FROM revision
INNER JOIN page
ON rev_page = page_id
WHERE page_namespace = "8"
GROUP BY user
ORDER BY count DESC
LIMIT 40;
DR edits by user[edit]
SELECT
rev_user_text AS user,
COUNT(rev_user_text) as ucount
FROM revision
INNER JOIN page
ON rev_page = page_id
WHERE page_namespace = "4"
AND page_title LIKE "Deletion_requests/%"
GROUP BY user
ORDER BY ucount DESC
LIMIT 40;
Categorymoves by users with low editcount[edit]
SELECT
DATE_FORMAT(rc_timestamp, "%b %d %Y %h:%i %p") AS ts,
REPLACE(rc_title,'_',' ') AS oldcatname,
REPLACE( SUBSTRING_INDEX(SUBSTRING_INDEX(rc_params,';',2),':',-2) ,'"',' ') AS newcatname, /* unserialize */
rc_user_text AS user,
user_editcount AS editcount
FROM recentchanges
INNER JOIN user
ON rc_user=user_id
WHERE rc_log_action = "move"
AND rc_namespace = "14"
AND user_editcount < 50
ORDER BY rc_timestamp DESC;
Uploader with the most uplaods in the last ~30 days (40)[edit]
SELECT
rc_user_text,
ug_group as ug,
COUNT(rc_id) AS lcount
FROM recentchanges
LEFT JOIN
(
SELECT
ug_user,
ug_group
FROM user_groups
WHERE ug_group = "bot"
OR ug_group = "gwtoolset"
) AS ugu
ON rc_user = ug_user
WHERE rc_log_type = "upload"
GROUP BY rc_user_text
ORDER BY lcount DESC
LIMIT 40;
Possible broken files[edit]
SELECT
CONCAT( '* [[:File:',img_name, ']]') AS file
FROM image
where img_height = "0"
AND img_minor_mime NOT IN ('ogg', 'x-flac', 'midi', 'wav', 'webm')
LIMIT 1;
View gadget OTRS taggings[edit]
SELECT
DATE_FORMAT(rc_timestamp, "%b %d %Y %h:%i %p") AS timestamp,
rc_user_text AS user,
REPLACE(rc_comment,'([[MediaWiki:Gadget-PermissionOTRS.js|Script]]) ','') AS esum
FROM recentchanges
WHERE rc_comment LIKE "%[[MediaWiki:Gadget-PermissionOTRS.js|Script]]%"
ORDER BY rc_timestamp DESC;
Count of open (not archived) deletion requests sorted by month[edit]
SELECT
page_title AS DR,
COUNT(tl_from) AS count
FROM templatelinks
INNER JOIN page
ON tl_from = page_id
WHERE tl_title LIKE "Deletion_requests/%"
AND tl_namespace = "4"
AND page_namespace = "4"
AND page_title REGEXP "^Deletion_requests\/[0-9]{4}\/[0-9]{2}\/[0-9]{2}$"
GROUP BY DR
ORDER BY count;
PD textlogos nominated for deletion[edit]
SELECT page_title AS file
FROM page
JOIN templatelinks
ON page_id = tl_from
AND tl_title="PD-shape"
AND tl_namespace = 10
AND page_namespace = 6
AND page_title IN (SELECT page_title
FROM page
JOIN templatelinks
ON page_id = tl_from
AND tl_title="Delete"
AND tl_namespace = 10
AND page_namespace = 6)
ORDER by page_title ASC;
Scan new uploads exifbased for possible copyvios[edit]
SELECT rc_title AS file,
DATE_FORMAT(rc_timestamp, "%b %d %Y %h:%i %p") AS timestamp,
rc_user_text AS user
FROM recentchanges
LEFT JOIN user_groups
ON rc_user=ug_user
LEFT JOIN image
ON rc_title=img_name
INNER JOIN user
ON rc_user=user_id
WHERE ug_group IS NULL
AND rc_log_action = "upload"
AND (
img_metadata LIKE "%Photoshop%"
OR img_metadata LIKE "%all_rights_reserved%"
OR img_metadata LIKE "%Alle_Rechte_vorbehalten%"
)
AND user_editcount <= 25
AND rc_timestamp > DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 DAY), '%Y%m%d%H%i%s')
AND rc_title NOT IN (SELECT
page_title
FROM page
JOIN templatelinks
ON page_id = tl_from
WHERE tl_title="PermissionOTRS"
AND tl_namespace = 10)
ORDER BY rc_timestamp DESC;
OTRS template added by non members not in local usergroup[edit]
SELECT
DATE_FORMAT(afl_timestamp, "%Y-%m-%d %H:%i:%s") AS timestamp,
afl_namespace AS ans,
REPLACE(afl_title,'_',' ' ) AS page,
afl_user_text AS user,
user_editcount AS editcount,
DATE_FORMAT(user_registration, "%Y-%m-%d") AS reg,
afl_rev_id AS rev
FROM abuse_filter_log
LEFT JOIN user
ON user_id = afl_user
LEFT JOIN user_groups
ON afl_user=ug_user
WHERE afl_filter = "69"
AND ug_group IS NULL
AND afl_rev_id IS NOT NULL
ORDER BY afl_timestamp DESC
limit 200;
Admin actions by admins in the last ~30 days[edit]
SELECT
rc_user_text AS sysop,
count(rc_id) AS admin_actions,
edits_user_count AS sysopedits
FROM recentchanges
LEFT JOIN
(
SELECT
rc_user AS edits_user,
count(rc_id) AS edits_user_count
FROM recentchanges
WHERE rc_source = "mw.edit"
OR rc_source = "mw.new"
GROUP BY rc_user
) AS isbot
ON rc_user = edits_user
WHERE rc_log_type IN ("block","delete","import","protect","rights")
AND rc_user IN
(
SELECT
ug_user AS rc_user
FROM user_groups
WHERE ug_group = "sysop"
)
AND rc_type != "5"
GROUP BY rc_user_text
ORDER BY rc_user_text ASC;
Automated edits by year[edit]
SELECT
DATE_FORMAT(rev_timestamp,"%Y") AS y,
COUNT(rev_id) AS count
FROM revision
WHERE rev_comment LIKE "%Using%COM:VFC%"
OR rev_comment LIKE "%Using%MediaWiki:VisualFileChange.js%"
group by y;
Cat-a-lot
SELECT
DATE_FORMAT(rev_timestamp,"%Y") AS y,
COUNT(rev_id) AS count
FROM revision
WHERE rev_comment LIKE "%[[Help:Cat-a-lot|Cat-a-lot]]%"
group by y;
HotCat
SELECT
DATE_FORMAT(rev_timestamp,"%Y") AS y,
COUNT(rev_id) AS count
FROM revision
WHERE rev_comment LIKE "%|HotCat%"
group by y;
By hand patrollings counter[edit]
SELECT
log_user_text AS user,
COUNT(log_id) AS count
FROM logging
WHERE log_action = 'patrol'
AND log_params LIKE '%"6::auto";i:0%'
GROUP by log_user_text
ORDER BY count DESC
LIMIT 200;
Admins with less than five adminactions in the last six months[edit]
SELECT
user_name AS sysop,
admin_actions
FROM user_groups
LEFT JOIN
(
SELECT log_user_text,
log_user,
count(log_id) AS admin_actions
FROM logging
WHERE log_type IN ("block","delete","import","protect","rights", "merge", "massmessage", "abusefilter")
AND log_type != "5"
AND log_timestamp > DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -6 MONTH), "%Y%m%d%H%i%s")
GROUP BY log_user_text
) AS sysc
ON log_user = ug_user
INNER JOIN user
ON user_id = ug_user
WHERE ug_group = "sysop"
AND ( admin_actions < 5 OR admin_actions IS NULL)
ORDER BY admin_actions DESC;
cdc command example[edit]
SELECT REPLACE( CONCAT( "{{move cat|", cat_title, "|", REPLACE(cat_title, "in_countries", "by_country") , "|reason=ASPERCFD|user=username}}" ) , "_", " ") AS movecommand
FROM category
WHERE cat_title LIKE "%in_countries%"
LIMIT 700;
metawiki_p[edit]
No global rename action in the last 356 days[edit]
SELECT DISTINCT user_name AS inactive_renamer
FROM user_groups
INNER JOIN user ON user_id = ug_user
WHERE ug_group = "global-renamer"
AND ug_user NOT IN (
SELECT DISTINCT log_user as ug_user
FROM logging
WHERE log_type = "gblrename"
AND log_timestamp > DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -365 DAY), '%Y%m%d%H%i%s')
);
centralauth_p[edit]
CA accounts containing *(WMF) or -*WMF[edit]
SELECT
gu_locked as locked,
gu_name as user,
gu_registration as ca_created
FROM globaluser
WHERE gu_name LIKE "%(WMF)"
OR gu_name LIKE "%-WMF";
Locked accounts in local user groups on commons[edit]
SELECT gu_name
FROM globaluser
JOIN commonswiki_p.user
ON gu_name = user_name
JOIN commonswiki_p.user_groups
ON user_id = ug_user
WHERE gu_locked = "1";
foundationswiki_p[edit]
Possible volunteer account[edit]
SELECT
user_name AS user,
user_editcount
FROM user
WHERE user_id NOT IN
(SELECT ipb_id
FROM ipblocks
)
AND user_name NOT LIKE "%-WMF"
AND user_name NOT LIKE "%(WM%)"
ORDER BY user_name ASC;
Possible role accounts[edit]
SELECT
user_name AS user,
user_editcount
FROM user
WHERE user_id NOT IN
(SELECT ipb_id
FROM ipblocks
)
AND (
user_name LIKE "%-WMF"
OR user_name LIKE "%(WM%)"
)
ORDER BY user_name ASC;
crosswiki[edit]
Get number of active users & pages from all wikis[edit]
#!/bin/bash
wikis=$(mysql --defaults-file=~/replica.my.cnf -h s1.labsdb meta_p -e "SELECT dbname FROM wiki;") # get all databasenames
for dbname in $wikis;
do
echo ------ $dbname ------
date -u # get timestamp
echo "SELECT ss_active_users AS active_users,
ss_total_pages AS total_pages
FROM site_stats
LIMIT 1;" | mysql --defaults-file=~/replica.my.cnf -h s1.labsdb ${dbname}_p -t # perform querys on db's
done;