|  | --- | 
|  | title: "PR Coding Time" | 
|  | description: > | 
|  | PR Coding Time | 
|  | sidebar_position: 15 | 
|  | --- | 
|  |  | 
|  | ## What is this metric? | 
|  | The time it takes from the first commit until a PR is issued. | 
|  |  | 
|  | ## Why is it important? | 
|  | It is recommended that you keep every task on a workable and manageable scale for a reasonably short amount of coding time. The average coding time of most engineering teams is around 3-4 days. | 
|  |  | 
|  | ## Which dashboard(s) does it exist in? | 
|  | - [Engineering Throughput and Cycle Time](/livedemo/EngineeringLeads/EngineeringThroughputAndCycleTime) | 
|  | - [Engineering Throughput and Cycle Time - Team View](/livedemo/EngineeringLeads/EngineeringThroughputAndCycleTimeTeamView) | 
|  |  | 
|  |  | 
|  | ## How is it calculated? | 
|  | <b>Data Sources Required</b> | 
|  |  | 
|  | This metric relies on PRs/MRs collected from GitHub, GitLab, BitBucket, Gitee or other code review tools. | 
|  |  | 
|  | <b>Data Transformation Required</b> | 
|  |  | 
|  | N/A | 
|  |  | 
|  | <b>SQL Queries</b> | 
|  |  | 
|  | The following SQL shows how to find the `coding time` of a specific PR. DevLake pre-calculates the metric and stores it in table.project_pr_metrics. | 
|  |  | 
|  | ``` | 
|  | SELECT | 
|  | pr_coding_time/60 as 'PR Coding Time(h)' | 
|  | FROM | 
|  | project_pr_metrics | 
|  | ``` | 
|  |  | 
|  |  | 
|  | If you want to measure the monthly trend of `PR coding time` in the screenshot below, please run the following SQL in Grafana. | 
|  |  | 
|  |  | 
|  |  | 
|  | ``` | 
|  | SELECT | 
|  | DATE_ADD(date(pr.created_date), INTERVAL -DAY(date(pr.created_date))+1 DAY) as time, | 
|  | avg(ppm.pr_coding_time)/60 as 'PR Coding Time(h)' | 
|  | FROM | 
|  | pull_requests pr | 
|  | JOIN project_pr_metrics ppm ON pr.id = ppm.id | 
|  | GROUP BY 1 | 
|  | ORDER BY 1 | 
|  | ``` | 
|  |  | 
|  | ## How to improve? | 
|  | Divide coding tasks into workable and manageable pieces. |