N012-M3 Tier 1 · Foundations · medium hr · Helix Systems

Return the name and title of every employee currently in a management role

Part of BETWEEN, IN, and LIKE in SQL

The problem

Helix Systems' HR team is auditing the management layer ahead of an org chart update. A management role is any title that contains the word manager somewhere in it.

Write a query to return the name and title of every employee currently in a management role.

Assumptions:

  • The employees table contains every active and former employee at Helix Systems.
  • Job titles use mixed capitalisation across departments — some are stored with a capital M (e.g., Engineering Manager), others with a lowercase m (e.g., account manager). The match must catch both.

Output:

  • One row per qualifying employee, with columns name and title.
Schema · hr 4 tables
departments
id integer
name text
location text
budget numeric
salaries
id integer
employee_id integer
amount numeric
effective_date date
end_date? date
employees
id integer
name text
email text
department_id integer
manager_id? integer
hire_date date
title text
is_active boolean
job_history
id integer
employee_id integer
title text
department_id integer
start_date date
end_date? date

Run previews · Check grades

Write a query, then run it to see results here.

Worked solution Try it yourself first
Solution query
SELECT
  name,
  title
FROM
  employees
WHERE
  title ILIKE '%manager%'

The shape

ILIKE '%manager%' is a case-insensitive substring match — % on both sides lets manager appear anywhere in the title, and ILIKE makes the comparison ignore capitalisation so titles stored with either capital M or lowercase m both pass.

Clause by clause

  • SELECT name, title returns the two columns the HR audit needs: the employee's name and the title that classifies them as a manager.
  • FROM employees reads the employee roster.
  • WHERE title ILIKE '%manager%' keeps only the rows whose title contains the substring manager somewhere in it, with case ignored. Engineering Manager matches because Manager sits at the end. account manager matches because manager is there in lowercase. A title like Director of Engineering doesn't match because the substring isn't present at all.

Why this and not LIKE '%manager%'

LIKE is case-sensitive in PostgreSQL. LIKE '%manager%' would match account manager but miss Engineering Manager — the capital M doesn't match the lowercase m in the pattern. Flip the pattern to '%Manager%' and the opposite gap opens. Neither form catches both spellings on its own.

ILIKE is the PostgreSQL extension that makes the comparison case-insensitive. The pattern is written in whatever case is convenient, and the engine matches without regard to capitalisation on either side. Same wildcard rules as LIKE% for any sequence, _ for one character — only the casing semantics change.

The trap

Forget that LIKE is case-sensitive and the query silently undercounts. There is no error, no warning. The HR team gets a result set that looks reasonable but is missing every manager whose title is stored in the non-matching case. The fix is to reach for ILIKE anytime the underlying data has inconsistent capitalisation and the match must catch both cases, or to standardise the data upstream so plain LIKE is enough.

You practiced case-insensitive pattern matching with ILIKE. PostgreSQL's LIKE is case-sensitive by default — ILIKE is the recurring fix any time the data has inconsistent capitalisation and the match must catch both cases without preprocessing.

How you actually get good at SQL

Reading explains SQL. Writing it, over and over with instant feedback, is what makes you fluent.

That's the whole SQLMaxx loop: 600+ real problems, instant AI feedback, mastery you can actually see, and spaced review that won't let you forget.

A stack of SQL practice problem cards, the top card showing an employees table.
615 problems · 66 concepts

Real problems. Not toy examples.

615 hand-built problems spanning all 66 concepts, from basic SELECTs to window functions, built on real schemas and real business questions, the kind you'll actually get asked on the job. Enough reps to make SQL automatic.

A retro computer showing a SQL query marked correct with a green checkmark.
Instant AI feedback

Write a query. Know if it's right in one second.

No copying an answer and hoping it clicked. The AI grader checks your real query against real data, catches exactly what's wrong, and explains the fix in plain English, like a senior analyst reading over your shoulder on every problem.

A circular mastery progress dial filling from blue to green, the SQLMaxx diamond at its center.
Mastery tracking

Stop guessing whether you actually know it.

SQLMaxx tracks every concept and shows you what you've mastered and what's still shaky. Your skills fill in one concept at a time, so 'I think I get joins' becomes something you can prove.

A SQL query editor circled by a blue return arrow with a clock, scheduled to come back for review.
Spaced review

Learn it once. Keep it for good.

Most of what you learn this week fades by next week. So when a concept comes due for review, SQLMaxx hands you a fresh problem to solve from a blank editor, not a flashcard to re-read. A research-backed spaced-repetition algorithm (FSRS) times each return for right before you'd forget, so your SQL is still there months later, when the interview or the job actually needs it.

Practice, feedback, mastery, review. That's the loop that turns reading into real skill.

Start free

No account, no credit card. Start solving in under a minute.