CREATE TABLE Employee (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department VARCHAR(50),
salary NUMERIC(10,2),
hire_date DATE,
manager_id INT
);
INSERT INTO Employee (first_name, last_name, department, salary, hire_date, manager_id) VALUES
('Abhishek', 'Raut', 'Engineering', 90000, '2021-06-10', NULL),
('Riya', 'Patel', 'HR', 60000, '2022-01-15', 1),
('Arjun', 'Mehta', 'Engineering', 75000, '2020-09-05', 1),
('Sneha', 'Sharma', 'Marketing', 50000, '2023-03-20', 2),
('Raj', 'Singh', 'Engineering', 95000, '2019-12-01', NULL),
('Neha', 'Khan', 'Finance', 80000, '2020-04-12', 3);
-- Employees whose salary is between 60k and 90k
SELECT first_name, salary
FROM Employee
WHERE salary BETWEEN 60000 AND 90000;
-- Employees hired between 2020 and 2022
SELECT first_name, hire_date
FROM Employee
WHERE hire_date BETWEEN '2020-01-01' AND '2022-12-31';
🧩 Note: BETWEEN is inclusive — it includes both boundary values.
-- Employees in Engineering or HR department
SELECT first_name, department
FROM Employee
WHERE department IN ('Engineering', 'HR');
-- Employees NOT in Finance or Marketing
SELECT first_name, department
FROM Employee
WHERE department NOT IN ('Finance', 'Marketing');
🧠 Tip:
IN = shorthand for multiple ORs
👉 department IN ('Engineering', 'HR')
is same as
👉 department = 'Engineering' OR department = 'HR'
-- Employees whose first name starts with 'A'
SELECT first_name
FROM Employee
WHERE first_name LIKE 'A%';
-- Employees whose last name ends with 'a'
SELECT first_name, last_name
FROM Employee
WHERE last_name LIKE '%a';
-- Employees whose name contains 'ha'
SELECT first_name
FROM Employee
WHERE first_name LIKE '%ha%';
-- Case-insensitive match (PostgreSQL only)
SELECT first_name
FROM Employee
WHERE first_name ILIKE 'a%';
🧠 LIKE Wildcards: