0
0
PostgreSQLquery~20 mins

SELECT with PostgreSQL-specific features - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
PostgreSQL SELECT Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
What is the output of this query using PostgreSQL's DISTINCT ON?
Consider the table employees with columns department and salary. What rows does this query return?
SELECT DISTINCT ON (department) department, salary FROM employees ORDER BY department, salary DESC;
PostgreSQL
CREATE TABLE employees (department TEXT, salary INT);
INSERT INTO employees VALUES
('Sales', 5000),
('Sales', 6000),
('HR', 4500),
('HR', 4700),
('IT', 7000);

SELECT DISTINCT ON (department) department, salary FROM employees ORDER BY department, salary DESC;
A[{'Sales', 5000}, {'HR', 4500}, {'IT', 7000}]
B[{'Sales', 6000}, {'HR', 4700}, {'IT', 7000}]
C[{'Sales', 6000}, {'HR', 4500}, {'IT', 7000}]
D[{'Sales', 5000}, {'HR', 4700}, {'IT', 7000}]
Attempts:
2 left
💡 Hint
DISTINCT ON returns the first row of each group based on the ORDER BY clause.
query_result
intermediate
2:00remaining
What does this query using PostgreSQL's RETURNING clause output?
Given the table products with columns id and price, what is the output of this query?
UPDATE products SET price = price * 1.1 WHERE id = 2 RETURNING id, price;
PostgreSQL
CREATE TABLE products (id INT PRIMARY KEY, price NUMERIC);
INSERT INTO products VALUES (1, 100), (2, 200);

UPDATE products SET price = price * 1.1 WHERE id = 2 RETURNING id, price;
A[{id: 2, price: 220}]
B[{id: 1, price: 100}, {id: 2, price: 220}]
C[]
D[{id: 2, price: 200}]
Attempts:
2 left
💡 Hint
RETURNING shows the rows affected by the UPDATE.
📝 Syntax
advanced
2:00remaining
Which option correctly uses PostgreSQL's JSONB operators to extract a value?
Given a table data with a JSONB column info, which query correctly extracts the text value of the key name?
PostgreSQL
SELECT info->>'name' FROM data;
ASELECT info->>name FROM data;
BSELECT info->'name' FROM data;
CSELECT info->>'name' FROM data;
DSELECT info->name FROM data;
Attempts:
2 left
💡 Hint
Use ->> with quotes around the key to get text.
optimization
advanced
2:00remaining
Which index type is best for optimizing full-text search in PostgreSQL?
You want to speed up searches on a text column using PostgreSQL's full-text search. Which index type should you create?
ACREATE INDEX idx ON table USING gin (to_tsvector('english', column));
BCREATE INDEX idx ON table USING btree (column);
CCREATE INDEX idx ON table USING hash (column);
DCREATE INDEX idx ON table USING gist (column);
Attempts:
2 left
💡 Hint
Full-text search uses tsvector and GIN indexes.
🧠 Conceptual
expert
2:00remaining
What is the effect of the PostgreSQL-specific clause FOR UPDATE SKIP LOCKED in a SELECT query?
Consider a SELECT query with FOR UPDATE SKIP LOCKED. What does this clause do?
AIt causes the query to wait until all rows are unlocked before returning.
BIt skips locking any rows and returns all rows immediately.
CIt locks all rows in the table regardless of selection.
DIt locks selected rows and skips rows already locked by other transactions.
Attempts:
2 left
💡 Hint
SKIP LOCKED avoids waiting on locked rows.