share facebook facebook twitter menu hatena pocket slack

2011.12.13 TUE

Postgresqlで年代を算出する

木村 圭佑

WRITTEN BY 木村 圭佑

こんちには。
職人見習いの木村です。

会員を持っているWEBサイトを運営している場合、マーケティング用途で年代別の利用者を抽出することがあると思います。
今回は、Postgresqlで年代を算出する書き方を紹介します。

テーブルに以下のようなカラム構成で生年月日が入っているものとします。

  • birthday_yyyy
  • birthday_mm
  • birthday_dd

これを10代から70代までを分けて算出するには以下のcase文を使います。

case
 when extract(year from age(current_date, to_date(to_char(birthday_yyyy * 10000 + birthday_mm * 100 + birthday_dd,'00000000'),'yyyymmdd')))  when extract(year from age(current_date, to_date(to_char(birthday_yyyy * 10000 + birthday_mm * 100 + birthday_dd,'00000000'),'yyyymmdd')))  when extract(year from age(current_date, to_date(to_char(birthday_yyyy * 10000 + birthday_mm * 100 + birthday_dd,'00000000'),'yyyymmdd')))  when extract(year from age(current_date, to_date(to_char(birthday_yyyy * 10000 + birthday_mm * 100 + birthday_dd,'00000000'),'yyyymmdd')))  when extract(year from age(current_date, to_date(to_char(birthday_yyyy * 10000 + birthday_mm * 100 + birthday_dd,'00000000'),'yyyymmdd')))  when extract(year from age(current_date, to_date(to_char(birthday_yyyy * 10000 + birthday_mm * 100 + birthday_dd,'00000000'),'yyyymmdd')))  else '70代以上'
end
) as age,

まずyyyymmddの形にして文字列型に変換、その後datetime型に変換して、current_dateと比較という手順です。
SQLレベルで年代計算できるとそのままプログラムに落とせるので楽です。

※この記事は、なかの人(moresmileman)が書いています。

木村 圭佑

木村 圭佑

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。