We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
WITH occupation_rank AS (
SELECT
name,
occupation,
ROW_NUMBER() OVER(PARTITION BY occupation ORDER BY name ASC) as rn
FROM occupations
)
SELECT
MAX(CASE WHEN occupation = 'Doctor' THEN name END) AS doctor_names,
MAX(CASE WHEN occupation = 'Professor' THEN name END) AS professor_names,
MAX(CASE WHEN occupation = 'Singer' THEN name END) AS singer_names,
MAX(CASE WHEN occupation = 'Actor' THEN name END) AS actor_names
FROM occupation_rank
GROUP BY rn
ORDER BY rn;
Second approach: using subquery
SELECT
MAX(CASE WHEN occupation = 'Doctor' THEN name END) AS doctor_names,
MAX(CASE WHEN occupation = 'Professor' THEN name END) AS professor_names,
MAX(CASE WHEN occupation = 'Singer' THEN name END) AS singer_names,
MAX(CASE WHEN occupation = 'Actor' THEN name END) AS actor_names
FROM (
SELECT
name,
occupation,
ROW_NUMBER() OVER (PARTITION BY occupation ORDER BY name) as rn
FROM OCCUPATIONS
) AS sorted
GROUP BY rn;
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Occupations
You are viewing a single comment's thread. Return to all comments →
My solutions (MySQL). hope it helps!
First approach: using CTE
Second approach: using subquery