Рассчитать коэффициент текучести кадров по месяцам в Postgres / Rails - PullRequest
0 голосов
/ 09 июля 2019

У меня есть веб-приложение Rails / PostgreSQL с таблицей сотрудников в следующем формате:

# == Schema Information
#
# Table name: employees
#
#  id                  :bigint(8)        not null, primary key
#  first_name          :string
#  last_name           :string
#  hired_datetime      :datetime
#  terminated_datetime :datetime

Я хотел бы получить коэффициент удержания сотрудников по месяцам, как показано ниже (новсе 12 месяцев или, может быть, последние 12 месяцев): enter image description here

Как мне сгенерировать запрос (с ActiveRecord или прямым SQL) для получения данных, необходимых для этого графика?

1 Ответ

0 голосов
/ 09 июля 2019

Если вы пытаетесь сохранить комбинацию года и месяца, я бы предложил date_trunc, иначе date_part. Вот документация.

date_trunc('month', timestamp '2001-02-16 20:38:40')    2001-02-01 00:00:00
date_part('month', timestamp '2001-02-16 20:38:40')     2

Оттуда вы можете создавать агрегатные функции, такие как count.

SELECT count(*), date_trunc('month', terminated_datetime) 
FROM employees
GROUP BY date_trunc('month', terminated_datetime);

Или, если вы используете более поздний запрос,Вы ищете конкретные записи сотрудников (включая первый, последний и т. д.) в декабре 2018 года:

SELECT *, date_trunc('month', terminated_datetime) 
FROM employees 
WHERE date_trunc('month', terminated_datetime) = '2018-12-01 00:00:00';

Опять же, вы можете посмотреть на всех сотрудников, ушедших в декабре (независимо от года):

SELECT *, date_part('month', terminated_datetime) 
FROM employees 
WHERE date_part('month', terminated_datetime) = 12;
...