Created
April 23, 2014 18:43
-
-
Save arm5077/11227658 to your computer and use it in GitHub Desktop.
Medicare doctor charge database query
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 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@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.