Skip to content

Instantly share code, notes, and snippets.

@DSKonstantin
Created July 19, 2019 08:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DSKonstantin/60fcc5282c30ee7aa663084a926ba021 to your computer and use it in GitHub Desktop.
Save DSKonstantin/60fcc5282c30ee7aa663084a926ba021 to your computer and use it in GitHub Desktop.
Can you check this SQL request? This was made for material view in DB (using gem 'scenic'). I want to know what could go wrong, what risks hidden here?
SELECT
payroll_reports.employee_work_period_id,
(select sum(a.regular_hours) from payroll_reports a where a.salary_type = '1' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as hourly_regular_hours,
(select sum(a.regular_gross_amount_cents) from payroll_reports a where a.salary_type = '1' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as hourly_regular_gross_amount_cents,
(select sum(a.ytd_regular_hours) from payroll_reports a where a.salary_type = '1' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as hourly_ytd_regular_hours,
(select sum(a.ytd_regular_gross_amount_cents) from payroll_reports a where a.salary_type = '1' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as hourly_ytd_regular_gross_amount_cents,
(select sum(a.overtime_hours) from payroll_reports a where a.salary_type = '1' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as hourly_overtime_hours,
(select sum(a.overtime_gross_amount_cents) from payroll_reports a where a.salary_type = '1' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as hourly_overtime_gross_amount_cents,
(select sum(a.ytd_overtime_hours) from payroll_reports a where a.salary_type = '1' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as hourly_ytd_overtime_hours,
(select sum(a.ytd_overtime_gross_amount_cents) from payroll_reports a where a.salary_type = '1' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as hourly_ytd_overtime_gross_amount_cents,
(select sum(a.regular_hours) from payroll_reports a where a.salary_type = '2' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as salary_regular_hours,
(select sum(a.regular_gross_amount_cents) from payroll_reports a where a.salary_type = '2' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as salary_regular_gross_amount_cents,
(select sum(a.ytd_regular_hours) from payroll_reports a where a.salary_type = '2' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as salary_ytd_regular_hours,
(select sum(a.ytd_regular_gross_amount_cents) from payroll_reports a where a.salary_type = '2' and a.employee_work_period_id = payroll_reports.employee_work_period_id) as salary_ytd_regular_gross_amount_cents,
(select sum(a.paid_phone_price_cents) from payroll_reports a where a.employee_work_period_id = payroll_reports.employee_work_period_id) as paid_phone_price_cents,
(select sum(a.total_net_amount_cents) from payroll_reports a where a.employee_work_period_id = payroll_reports.employee_work_period_id) as total_net_amount_cents,
(select sum(a.total_hours) from payroll_reports a where a.employee_work_period_id = payroll_reports.employee_work_period_id) as total_hours,
(select sum(a.total_gross_amount_cents) from payroll_reports a where a.employee_work_period_id = payroll_reports.employee_work_period_id) as total_gross_amount_cents,
(select sum(a.ytd_total_hours) from payroll_reports a where a.employee_work_period_id = payroll_reports.employee_work_period_id) as ytd_total_hours,
(select sum(a.ytd_total_gross_amount_cents) from payroll_reports a where a.employee_work_period_id = payroll_reports.employee_work_period_id) as ytd_total_gross_amount_cents,
json_agg(DISTINCT
(SELECT x FROM (SELECT
payroll_reports.id,
payroll_reports.employee_id,
payroll_reports.salary_type,
(
SELECT first_name
FROM employees
WHERE id = payroll_reports.employee_id),
(
SELECT last_name
FROM employees
WHERE id = payroll_reports.employee_id)
) AS x)
) as payroll_reports,
json_agg(DISTINCT
(SELECT x FROM (SELECT
payroll_salary_changes.amount_cents,
payroll_salary_changes.ytd_amount_cents,
payroll_salary_changes.paid_amount_cents,
(
SELECT name
FROM payroll_salary_change_reasons
WHERE id = payroll_salary_changes.payroll_salary_change_reason_id)
WHERE payroll_salary_changes.salary_changeable_id = payroll_reports.id and payroll_salary_changes.salary_changeable_type = 'PayrollReport'
) AS x)
) as deductions,
json_agg(DISTINCT
(SELECT x FROM (SELECT
payroll_report_states.total_gross_amount_cents,
payroll_report_states.total_tax_amount_cents,
payroll_report_states.ytd_total_gross_amount_cents,
payroll_report_states.ytd_total_tax_amount_cents,
payroll_report_states.regular_hours,
payroll_report_states.overtime_hours,
payroll_report_states.total_hours,
payroll_report_states.state_id,
(
SELECT name
FROM states
WHERE id = payroll_report_states.state_id)
WHERE payroll_report_states.payroll_report_id = payroll_reports.id
) AS x)
) as payroll_report_states,
json_agg(DISTINCT
(SELECT x FROM (SELECT
payroll_report_state_add_ons.total_gross_amount_cents,
payroll_report_state_add_ons.total_tax_amount_cents,
payroll_report_state_add_ons.ytd_total_gross_amount_cents,
payroll_report_state_add_ons.ytd_total_tax_amount_cents,
payroll_report_state_add_ons.payroll_tax_setup_add_on_id,
(
SELECT name
FROM payroll_tax_setup_add_ons
WHERE id = payroll_report_state_add_ons.payroll_tax_setup_add_on_id)
WHERE payroll_report_state_add_ons.payroll_report_id = payroll_reports.id
) AS x)
) as payroll_report_state_add_ons,
json_agg(
json_build_object( 'id', (SELECT emergency_services.id),
'data',
json_build_object( 'amount',
(
SELECT emergency_services.amount_cents
WHERE emergency_services.payroll_report_id = payroll_reports.id
), 'regular_hours',
(
SELECT DISTINCT extract( epoch from emergency_services.end_at - emergency_services.start_at)
WHERE emergency_services.payroll_report_id = payroll_reports.id
)
))
) as emergency_services
FROM "payroll_reports"
INNER JOIN "employees" ON "employees"."id" = "payroll_reports"."employee_id"
INNER JOIN "employment_histories" ON "employment_histories"."employee_id" = "employees"."id"
LEFT OUTER JOIN LATERAL(
SELECT DISTINCT id, amount_cents, ytd_amount_cents, paid_amount_cents, payroll_salary_change_reason_id, salary_changeable_id, salary_changeable_type
FROM "payroll_salary_changes"
WHERE "payroll_salary_changes"."salary_changeable_id" = "payroll_reports"."id" AND "payroll_salary_changes"."salary_changeable_type" = 'PayrollReport'
GROUP BY id, salary_changeable_id
) as payroll_salary_changes ON TRUE
LEFT OUTER JOIN LATERAL(
SELECT DISTINCT id, amount_cents, payroll_report_id, start_at, end_at FROM "emergency_services"
WHERE "emergency_services"."payroll_report_id" = "payroll_reports"."id"
GROUP BY id, salary_changeable_id
) as emergency_services ON TRUE
LEFT OUTER JOIN LATERAL(
SELECT DISTINCT id, regular_hours, overtime_hours, total_hours, total_gross_amount_cents, total_tax_amount_cents, ytd_total_gross_amount_cents, ytd_total_tax_amount_cents, state_id, payroll_report_id FROM "payroll_report_states"
WHERE "payroll_report_states"."payroll_report_id" = "payroll_reports"."id"
GROUP BY id, payroll_report_id
) as payroll_report_states ON TRUE
LEFT OUTER JOIN LATERAL(
SELECT DISTINCT id, total_gross_amount_cents, total_tax_amount_cents, ytd_total_gross_amount_cents, ytd_total_tax_amount_cents, payroll_tax_setup_add_on_id, payroll_report_id FROM "payroll_report_state_add_ons"
WHERE "payroll_report_state_add_ons"."payroll_report_id" = "payroll_reports"."id"
GROUP BY id, payroll_report_id
) as payroll_report_state_add_ons ON TRUE
WHERE "employees"."status" = '0' AND (employees.hide_from_payroll IS false AND (employment_histories.termination_date IS NULL))
GROUP BY payroll_reports.employee_work_period_id
ORDER BY employee_work_period_id DESC
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment