EN
Node.js - PostgreSQL CASE statement
0 points
In this article, we would like to show you how to use Postgres CASE statement in Node.js.

Note: at the end of this article you can find database preparation SQL queries.
xxxxxxxxxx
1
const { Client } = require('pg');
2
3
const client = new Client({
4
host: '127.0.0.1',
5
user: 'postgres',
6
database: 'database_name',
7
password: 'password',
8
port: 5432,
9
});
10
11
const getSalaryOverview = async () => {
12
const query = `
13
SELECT "name", "salary",
14
CASE
15
WHEN "salary" > 6000 THEN 'Salary greater than 6000$'
16
WHEN "salary" > 4000 THEN 'Salary greater than 4000$'
17
WHEN "salary" >= 2000 THEN 'Salary greater than 2000$'
18
ELSE 'Salary less than 2000$'
19
END AS "Salary information"
20
FROM "users";`;
21
try {
22
await client.connect(); // gets connection
23
const { rows } = await client.query(query); // sends query
24
console.table(rows);
25
} catch (error) {
26
console.error(error.stack);
27
} finally {
28
await client.end(); // closes connection
29
}
30
};
31
32
getSalaryOverview();
Result:
xxxxxxxxxx
1
┌─────────┬─────────────┬───────────┬─────────────────────────────┐
2
│ (index) │ name │ salary │ Salary information │
3
├─────────┼─────────────┼───────────┼─────────────────────────────┤
4
│ 0 │ 'John' │ '3512.00' │ 'Salary greater than 2000$' │
5
│ 1 │ 'Chris' │ '1344.00' │ 'Salary less than 2000$' │
6
│ 2 │ 'Kate' │ '6574.00' │ 'Salary greater than 6000$' │
7
│ 3 │ 'Ailisa' │ '6500.00' │ 'Salary greater than 6000$' │
8
│ 4 │ 'Gwendolyn' │ '4200.00' │ 'Salary greater than 4000$' │
9
│ 5 │ 'Simon' │ '3320.00' │ 'Salary greater than 2000$' │
10
│ 6 │ 'Taylor' │ '1500.00' │ 'Salary less than 2000$' │
11
│ 7 │ 'Andrew' │ '2100.00' │ 'Salary greater than 2000$' │
12
└─────────┴─────────────┴───────────┴─────────────────────────────┘
create_tables.sql
file:
xxxxxxxxxx
1
CREATE TABLE "users" (
2
"id" SERIAL,
3
"name" VARCHAR(50) NOT NULL,
4
"surname" VARCHAR(50) NOT NULL,
5
"department_id" INTEGER,
6
"salary" DECIMAL(15,2) NOT NULL,
7
PRIMARY KEY ("id")
8
);
insert_data.sql
file:
xxxxxxxxxx
1
INSERT INTO "users"
2
( "name", "surname", "department_id", "salary")
3
VALUES
4
('John', 'Stewart', 1, '3512.00'),
5
('Chris', 'Brown', 2, '1344.00'),
6
('Kate', 'Lewis', 3, '6574.00'),
7
('Ailisa', 'Gomez', NULL, '6500.00'),
8
('Gwendolyn', 'James', 2, '4200.00'),
9
('Simon', 'Cousersllins', 4, '3320.00'),
10
('Taylor', 'Martin', 2, '1500.00'),
11
('Andrew', 'Thompson', NULL, '2100.00');
Native SQL query (used in the above example):
xxxxxxxxxx
1
SELECT `name`, `salary`,
2
CASE
3
WHEN `salary` > 6000 THEN 'Salary greater than 6000$'
4
WHEN `salary` > 4000 THEN 'Salary greater than 4000$'
5
WHEN `salary` >= 2000 THEN 'Salary greater than 2000$'
6
ELSE 'Salary less than 2000$'
7
END AS 'Salary information'
8
FROM `users`;