Distinct

PRQL doesn’t have a specific distinct keyword. Instead, use group and take 1:

PRQL

  1. from employees
  2. select department
  3. group department (
  4. take 1
  5. )

SQL

  1. SELECT
  2. DISTINCT department
  3. FROM
  4. employees

This also works without a linebreak:

PRQL

  1. from employees
  2. select department
  3. group department (take 1)

SQL

  1. SELECT
  2. DISTINCT department
  3. FROM
  4. employees

Selecting from each group

We are be able to select a single row from each group by combining group and sort:

PRQL

  1. # youngest employee from each department
  2. from employees
  3. group department (
  4. sort age
  5. take 1
  6. )

SQL

  1. WITH table_1 AS (
  2. SELECT
  3. *,
  4. ROW_NUMBER() OVER (
  5. PARTITION BY department
  6. ORDER BY
  7. age
  8. ) AS _expr_0
  9. FROM
  10. employees
  11. )
  12. SELECT
  13. *
  14. FROM
  15. table_1 AS table_0
  16. WHERE
  17. _expr_0 <= 1

Roadmap

When using Postgres dialect, we are planning to compile:

… to …

  1. SELECT DISTINCT ON (department) *
  2. FROM employees
  3. ORDER BY department, age