하위 쿼리가 포함 된 Postgres 쿼리를 사용하여 12 행의 데이터 만 출력합니다. 정확하게보고 싶습니다. 이 행은 데이터베이스의 모든 연도에 걸친 월 평균 데이터를 나타내며 매월 한 행씩 표시됩니다. 쿼리 :Postgres는 연도 수를 기준으로 여러 개의 동일한 결과를 반환합니다.
SELECT
to_char(to_timestamp(to_char(subquery2.month, '999'), 'MM'), 'Mon') AS Month,
subquery2.month AS Month_num,
round(AVG(subquery2.all_use_tot), 2) AS Average_Withdrawals,
round(AVG(subquery2.all_cu_tot), 2) AS Average_Consumptive_Use
FROM
(SELECT
subquery1.month,
subquery1.year,
sum(subquery1.liv_tot) AS all_use_tot,
sum(subquery1.CU_total) AS all_cu_tot
FROM
(SELECT
EXTRACT('Month' FROM withdrawals.begintime) AS month,
EXTRACT(YEAR FROM withdrawals.begintime)::int AS year,
tdx_ic_use_type.use_type_code AS Use_type,
sum(withdrawals.withdrawalvalue_mgd) AS liv_tot,
(tdx_ic_use_type.cufactor)*(sum(withdrawals.withdrawalvalue_mgd)) AS CU_total
FROM
medford.tdx_ic_use_type,
medford.withdrawalsites
JOIN medford.subshed2 ON ST_Contains(medford.subshed2.the_geom, medford.withdrawalsites.the_geom)
JOIN medford.withdrawals ON medford.withdrawals.ic_site_id = medford.withdrawalsites.ic_site_id
WHERE
subshed2.id = '${param.shed_id}' AND
withdrawalsites.ic_pr_use_type_id = tdx_ic_use_type.use_type_code AND
withdrawals.intervalcodes_id = 2
GROUP BY
year,
extract('Month' from withdrawals.begintime),
tdx_ic_use_type.cufactor,
Use_type
ORDER BY
year, extract('Month' from withdrawals.begintime) ASC
) AS subquery1
GROUP BY
subquery1.year,
subquery1.month
) AS subquery2
GROUP BY
subquery2.month
ORDER BY
subquery2.month
출력은 보이는 무엇과 같은 :
"Jan" 1 1426.50 472.65
"Feb" 2 1449.00 482.10
"Mar" 3 1459.50 485.55
"Apr" 4 1470.00 489.00
"May" 5 1480.50 492.45
"Jun" 6 1491.00 495.90
"Jul" 7 1489.50 493.35
"Aug" 8 1512.00 502.80
"Sep" 9 1510.50 500.25
"Oct" 10 1533.00 509.70
"Nov" 11 1543.50 513.15
"Dec" 12 1542.00 510.60
나는 데이터베이스의 날짜 컬럼에서 추출 한 달 열입니다. 이 쿼리의 결과를 사용하여 배열에 저장하고 있지만이 정확한 결과를 테이블에있는 해마다 한 번씩 반복하고 싶습니다. 따라서 데이터베이스에 2 년의 데이터가있는 경우 24 개의 출력 행이 있어야하며 동일한 행 중 12 개가 두 번 반복되어야합니다. 데이터베이스에 3 년의 데이터가있는 경우, 36 개의 출력 행 또는 동일한 행의 12 개가 3 회 반복되어야합니다. 내 쿼리에서이를 어떻게 수행합니까? 열의 값 (날짜/시간 필드에있는 연도 수)에 따라 검색어를 반복 할 수 있습니까?
감사합니다. 내 질문을 실제 쿼리로 업데이트했습니다. 여러 가지 방법으로 제안을 시도했지만 값이 다른 해에 변경되어 동일한 12 개월 데이터 세트가 반복되지 않고 변경됩니다. 열의 값을 기반으로 쿼리를 반복 할 수있는 방법이 있습니까? – Jan
개월을 생성하는 예제를 추가했습니다. 이 결과 집합에 참여해야합니다. –