SQL
x
USE enwiki_p;
SELECT page_id,
links.numlinks + IFNULL(redirlinks.numlinks, 0) - IFNULL(redirs.numredirs, 0) AS numlinks
FROM
(SELECT p.page_id AS page_id,
count(*) AS numlinks
FROM page p
JOIN pagelinks pl
ON (p.page_namespace=pl.pl_namespace
AND p.page_title=pl.pl_title)
WHERE p.page_id IN (316, 324, 325, 330, 332, 334, 336, 339, 340, 344)
AND pl.pl_from_namespace=0
GROUP BY p.page_id
) AS links
LEFT JOIN
(SELECT p1.page_id,
count(*) AS numredirs
FROM page p1
JOIN redirect
ON (p1.page_namespace=rd_namespace
AND page_title=rd_title)
JOIN page p2
ON rd_from=p2.page_id
WHERE p2.page_namespace=0
AND p1.page_id IN (316, 324, 325, 330, 332, 334, 336, 339, 340, 344)
GROUP BY page_id
) AS redirs
USING (page_id)
LEFT JOIN
(SELECT p1.page_id,
count(*) AS numlinks
FROM page p1
JOIN redirect
ON (p1.page_namespace=rd_namespace
AND page_title=rd_title)
JOIN page p2
ON rd_from=p2.page_id
JOIN pagelinks pl
ON (p2.page_namespace=pl.pl_namespace
AND p2.page_title=pl.pl_title)
WHERE p2.page_namespace=0
AND pl.pl_from_namespace=0
AND p1.page_id IN (316, 324, 325, 330, 332, 334, 336, 339, 340, 344)
GROUP BY page_id
) AS redirlinks
USING (page_id);
By running queries you agree to the Cloud Services Terms of Use and you irrevocably agree to release your SQL under CC0 License.
All SQL code is licensed under CC0 License.