Skip to content

Instantly share code, notes, and snippets.

@arm5077
Created April 23, 2014 18:43
Show Gist options
  • Save arm5077/11227658 to your computer and use it in GitHub Desktop.
Save arm5077/11227658 to your computer and use it in GitHub Desktop.
Medicare doctor charge database query
SELECT medicare.*,
peerAverage.average AS charge_average,
( medicare.average_submitted_chrg_amt - peerAverage.average ) /
peerAverage.average * 100 AS difference_from_average,
totalAverage.total_difference_average
FROM medicare
JOIN (SELECT Avg(average_submitted_chrg_amt) AS average,
hcpcs_code,
place_of_service
FROM medicare
WHERE npi LIKE '%'
AND hcpcs_code LIKE medicare.hcpcs_code
AND nppes_provider_city LIKE 'Latrobe'
AND nppes_provider_state LIKE 'PA'
GROUP BY place_of_service,
hcpcs_code) AS peerAverage
ON medicare.hcpcs_code = peerAverage.hcpcs_code
AND medicare.place_of_service = peerAverage.place_of_service
/* This join basically repeats everything and to get total percentage average by doctor */
JOIN (SELECT npi,
Avg(( medicare.average_submitted_chrg_amt -
peerAverage.average ) /
peerAverage.average * 100) AS
total_difference_average
FROM medicare
JOIN (SELECT Avg(average_submitted_chrg_amt) AS average,
hcpcs_code,
place_of_service
FROM medicare
WHERE npi LIKE '%'
AND hcpcs_code LIKE medicare.hcpcs_code
AND nppes_provider_city LIKE 'Pittsburgh'
AND nppes_provider_state LIKE 'PA'
GROUP BY place_of_service,
hcpcs_code) AS peerAverage
ON medicare.hcpcs_code = peerAverage.hcpcs_code
AND medicare.place_of_service =
peerAverage.place_of_service
WHERE medicare.npi LIKE '%'
AND nppes_provider_last_org_name LIKE '%'
AND nppes_provider_first_name LIKE '%'
AND nppes_provider_city LIKE 'Pittsburgh'
AND nppes_provider_state LIKE 'PA'
AND medicare.hcpcs_code LIKE '%'
GROUP BY npi) AS totalAverage
ON medicare.npi = totalAverage.npi
GROUP BY npi,
place_of_service,
hcpcs_code
ORDER BY hcpcs_code ASC,
difference_from_average DESC
@arm5077
Copy link
Author

arm5077 commented Apr 25, 2014

@seejee Will try the index. The averages table has 2 million rows ... more than I expected, but logical, I guess -- you're dealing with 6,000 procedures across 50 states and 18,000 cities.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment