# PostgreSQL Test Given the following tables: ```sql CREATE TABLE departments ( id INTEGER PRIMARY KEY, name TEXT NOT NULL ); CREATE TABLE employees ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, department_id INTEGER NOT NULL REFERENCES departments (id), terminated_at DATE, salary INTEGER NOT NULL ); ``` Write a PostgreSQL query that returns, for each department, the current employees with the highest 3 unique salaries. Current employees are employees who have not been terminated (`terminated_at` is `NULL`.) The result should have the following columns: | Column name | Description | | --- | --- | | `department` | The name of the department | | `employee` | The name of the employee | | `salary` | The employee’s salary | The result can be in any order. ## Criteria - Correctness: Your query must return the correct result, without syntax errors, when executed on a PostgreSQL 12 or above server. - Readability: Your code should be clean, easy to understand and well-formatted. Comments are expected for any non-obvious code and engineering decisions. - Efficiency: The query should be efficient without unnecessary joins and aggregate functions. ## Submission Please provide a Zip archive containing a single `.sql` file with your query. ## Example `departments`: | id | name | | --- | --- | | 1 | Design | | 2 | Sales | `employees`: | id | name | department_id | terminated_at | salary | | --- | --- | --- | --- | --- | | 1 | Jessica | 1 | NULL | 45000 | | 2 | Hillary | 2 | 2014-03-31 | 40000 | | 3 | Sam | 2 | NULL | 20000 | | 4 | Matt | 1 | NULL | 50000 | | 5 | James | 1 | NULL | 29000 | | 6 | Charlotte | 1 | NULL | 45000 | | 7 | Isabella | 2 | NULL | 40000 | | 8 | Emma | 1 | NULL | 30000 | ### Output | department | employee | salary | | --- | --- | --- | | Design | Matt | 50000 | | Design | Jessica | 45000 | | Design | Charlotte | 45000 | | Design | Emma | 30000 | | Sales | Isabella | 40000 | | Sales | Sam | 20000 | --- Copyright (c) 2022 Imperium Empires. All rights reserved.