Help us understand the problem. What is going on with this article?

[PostgreSQL 9.0+] string_aggで順序を指定する

More than 3 years have passed since last update.

あれどうやって書くんだっけとなったのでメモ

この記事が前提とする環境

PostgreSQL 9.0以上

やりたいこと

従業員を表すテーブルemployeesがあるとする。

employee_id department_id employee_name
1 1 佐藤
2 1 鈴木
3 1 高橋
4 2 田中
5 2 伊藤

このとき、部門ごとに、その部門に所属している従業員の一覧を/区切りで出力したい。
出力の一貫性を保つために従業員の順番はemployee_id順とする。

department_id employee_names
1 佐藤/鈴木/高橋
2 田中/伊藤

コード

SELECT
  department_id,
  string_agg(employee_name, '/' ORDER BY employee_id) AS employee_names
FROM
  employees
GROUP BY
  department_id
ORDER BY
  department_id;

参考リンク

postgresql - How to get result from string_agg() with a proper order by - Stack Overflow

anqooqie
SIerの下請けで詳細設計から単体試験までの工程を主に担当しています。業務経験のある言語はExcel VBAとパッケージソフト用のDSLだけです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away