diff options
author | Timothy Andrew <mail@timothyandrew.net> | 2016-08-24 18:17:15 +0300 |
---|---|---|
committer | Timothy Andrew <mail@timothyandrew.net> | 2016-08-26 13:57:37 +0300 |
commit | 8ccea81cba048021ed9eded83db15b383ecd4a32 (patch) | |
tree | e5bcfd933ea6f9becb248c3e6dd6eaf8122c9ad8 /app/controllers/projects/cycle_analytics_controller.rb | |
parent | 516c838a1846d049814765afa85c28a3c14a5b9f (diff) |
Display numbers for the "Issue (Tracker)" cycle analytics metric.
1. Code is messy and untested, but it is a start.
Diffstat (limited to 'app/controllers/projects/cycle_analytics_controller.rb')
-rw-r--r-- | app/controllers/projects/cycle_analytics_controller.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/app/controllers/projects/cycle_analytics_controller.rb b/app/controllers/projects/cycle_analytics_controller.rb new file mode 100644 index 00000000000..ed885729fbb --- /dev/null +++ b/app/controllers/projects/cycle_analytics_controller.rb @@ -0,0 +1,32 @@ +class Projects::CycleAnalyticsController < Projects::ApplicationController + def show + @metrics = { + issue: issue + } + end + + private + + def issue + query = <<-HEREDOC + WITH ordered_data AS ( + SELECT extract(milliseconds FROM (COALESCE(first_associated_with_milestone_at, first_added_to_board_at) - issues.created_at)) AS data_point, + row_number() over (order by (COALESCE(first_associated_with_milestone_at, first_added_to_board_at) - issues.created_at)) as row_id + FROM issues + INNER JOIN issue_metrics ON issue_metrics.issue_id = issues.id + WHERE COALESCE(first_associated_with_milestone_at, first_added_to_board_at) IS NOT NULL + ), + + ct AS ( + SELECT count(1) AS ct + FROM ordered_data + ) + + SELECT avg(data_point) AS median + FROM ordered_data + WHERE row_id between (select ct from ct)/2.0 and (select ct from ct)/2.0 + 1; + HEREDOC + + ActiveRecord::Base.connection.execute(query).to_a.first['median'] + end +end |