Created
July 19, 2019 08:43
-
-
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?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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