🐈

GROUP BYについて

2024/03/27に公開

このドキュメントは、PostgreSQLのGROUP BYについて、使用する場面や例について書かれています。私の学習のために調査した内容が、他の方の参考になれば幸いです。

どんな時に使うのか

複数のレコードの特定のカラムをまとめて、集計したい時に使います。

「食べたい中華まん投稿ページ!」というサイトがある想定で、ユーザーIDごとの投稿数をGROUP BYを使って計測する例になります。

前提のSQL

CREATE TABLE posts (
  post_id SERIAL NOT NULL PRIMARY KEY,
  user_id INTEGER NOT NULL,
  post TEXT
);

INSERT INTO posts(user_id, post) VALUES(1, '肉まん食べたい');
INSERT INTO posts(user_id, post) VALUES(1, 'あんまん食べたい');
INSERT INTO posts(user_id, post) VALUES(1, 'ピザまん食べたい');
INSERT INTO posts(user_id, post) VALUES(2, '肉まん食べたい');

GROUP BYを使用したSQL

SELECT 
  COUNT(user_id),
  user_id 
FROM posts 
GROUP BY user_id
ORDER BY count DESC;

結果

count user_id
1 2
3 1

Discussion