-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathCountSalaryCategories.sql
More file actions
77 lines (66 loc) · 2.27 KB
/
CountSalaryCategories.sql
File metadata and controls
77 lines (66 loc) · 2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
-- Table: Accounts
-- +-------------+------+
-- | Column Name | Type |
-- +-------------+------+
-- | account_id | int |
-- | income | int |
-- +-------------+------+
-- account_id is the primary key (column with unique values) for this table.
-- Each row contains information about the monthly income for one bank account.
-- Write a solution to calculate the number of bank accounts for each salary category. The salary categories are:
-- "Low Salary": All the salaries strictly less than $20000.
-- "Average Salary": All the salaries in the inclusive range [$20000, $50000].
-- "High Salary": All the salaries strictly greater than $50000.
-- The result table must contain all three categories. If there are no accounts in a category, return 0.
-- Return the result table in any order.
-- The result format is in the following example.
-- Example 1:
-- Input:
-- Accounts table:
-- +------------+--------+
-- | account_id | income |
-- +------------+--------+
-- | 3 | 108939 |
-- | 2 | 12747 |
-- | 8 | 87709 |
-- | 6 | 91796 |
-- +------------+--------+
-- Output:
-- +----------------+----------------+
-- | category | accounts_count |
-- +----------------+----------------+
-- | Low Salary | 1 |
-- | Average Salary | 0 |
-- | High Salary | 3 |
-- +----------------+----------------+
-- Explanation:
-- Low Salary: Account 2.
-- Average Salary: No accounts.
-- High Salary: Accounts 3, 6, and 8.
-- Write your PostgreSQL query statement below
-- Solution
select category,
count(account_id) as accounts_count
from (
select account_id,
income,
case when income < 20000 then 'Low Salary'
when income > 50000
then 'High Salary'
when income >= 20000 and income <= 50000
then 'Average Salary'
end as category
from Accounts
) group by category
UNION ALL
select 'Average Salary' catgeory, 0 accounts_count
WHERE NOT EXISTS (SELECT 1 FROM Accounts
WHERE income >= 20000 and income <= 50000)
UNION ALL
select 'Low Salary' catgeory, 0 accounts_count
WHERE NOT EXISTS (SELECT 1 FROM Accounts
WHERE income < 20000)
UNION ALL
select 'High Salary' catgeory, 0 accounts_count
WHERE NOT EXISTS (SELECT 1 FROM Accounts
WHERE income > 50000)