--- layout: page title: The PADS last_solved: category: sql leetcode_url: https://www.hackerrank.com/challenges/the-pads/problem status: Attempted --- Problem ------- ``` Generate the following two result sets: Query an alphabetically ordered list of all names in OCCUPATIONS, immediately followed by the first letter of each profession as a parenthetical (i.e.: enclosed in parentheses). For example: AnActorName(A), ADoctorName(D), AProfessorName(P), and ASingerName(S). Query the number of ocurrences of each occupation in OCCUPATIONS. Sort the occurrences in ascending order, and output them in the following format: There are a total of [occupation_count] [occupation]s. where [occupation_count] is the number of occurrences of an occupation in OCCUPATIONS and [occupation] is the lowercase occupation name. If more than one Occupation has the same [occupation_count], they should be ordered alphabetically. Note: There will be at least two entries in the table for each type of occupation. Input Format The OCCUPATIONS table is described as follows: Occupation will only contain one of the following values: Doctor, Professor, Singer or Actor. Sample Input An OCCUPATIONS table that contains the following records: Sample Output Ashely(P) Christeen(P) Jane(A) Jenny(D) Julia(A) Ketty(P) Maria(A) Meera(S) Priya(S) Samantha(D) There are a total of 2 doctors. There are a total of 2 singers. There are a total of 3 actors. There are a total of 3 professors. ``` Solution ---------- {% highlight sql %} select concat(name, "(", substring(occupation, 1,1), ")") from occupations order by name; select concat("There are a total of ", count(*), " ", lower(occupation), "s.") from occupations group by occupation order by count(*), occupation; {% endhighlight %} ![image1]()