Improve get_quantiles method for exercise

This commit is contained in:
Sebastian Serth
2022-08-25 18:14:23 +02:00
parent bdebcf319e
commit 4de77ca3f5

View File

@ -255,7 +255,6 @@ class Exercise < ApplicationRecord
end end
def get_quantiles(quantiles) def get_quantiles(quantiles)
quantiles_str = self.class.sanitize_sql("[#{quantiles.join(',')}]")
result = ActiveRecord::Base.transaction do result = ActiveRecord::Base.transaction do
self.class.connection.execute(" self.class.connection.execute("
SET LOCAL intervalstyle = 'iso_8601'; SET LOCAL intervalstyle = 'iso_8601';
@ -362,7 +361,7 @@ class Exercise < ApplicationRecord
GROUP BY e.external_id, GROUP BY e.external_id,
f.user_id, f.user_id,
exercise_id ) exercise_id )
SELECT unnest(percentile_cont(array#{quantiles_str}) within GROUP (ORDER BY working_time)) SELECT unnest(percentile_cont(#{self.class.sanitize_sql(['array[?]', quantiles])}) within GROUP (ORDER BY working_time))
FROM result FROM result
") ")
end end