1 min read
313 words
Problem
Query
SELECT
id , COUNT ( id ) as num
FROM
(
SELECT
requester_id as id
FROM
RequestAccepted r
UNION ALL
SELECT
accepter_id as id
FROM
RequestAccepted r
) AS t
GROUP BY
id
ORDER BY
num DESC
LIMIT 1
Editorial Solution
Approach 1: Combining Tables Using UNION ALL and Finding the Top Values Using ORDER BY + LIMIT
WITH all_ids AS (
SELECT requester_id AS id
FROM RequestAccepted
UNION ALL
SELECT accepter_id AS id
FROM RequestAccepted )
SELECT id ,
COUNT ( id ) AS num
FROM all_ids
GROUP BY id
ORDER BY COUNT ( id ) DESC
LIMIT 1
Approach 2: Combining Tables Using UNION ALL and Finding Top Values Using RANK()
WITH all_ids AS (
SELECT requester_id AS id
FROM RequestAccepted
UNION ALL
SELECT accepter_id AS id
FROM RequestAccepted )
SELECT id , num
FROM
(
SELECT id ,
COUNT ( id ) AS num ,
RANK () OVER ( ORDER BY COUNT ( id ) DESC ) AS rnk
FROM all_ids
GROUP BY id
) t0
WHERE rnk = 1
Tags:
SQL
Updated: March 2, 2024
Leave a comment