programing

MariaDb: SELECT에서 파생된 결과를 기반으로 수학적 계산을 찾는 방법

yoursource 2022. 10. 23. 19:52
반응형

MariaDb: SELECT에서 파생된 결과를 기반으로 수학적 계산을 찾는 방법

다음과 같은 대규모 SQL을 보유하고 있습니다.

(MariaDb V5.5.65)

SELECT ....,
...,
SUM(BJ.intake) as intakeX,
(SELECT SUM(ibj.intake) FROM ibj WHERE ibj.p2p3 = 'P3' AND ne.see_id = ibj.ee_id ) as p3count,
...,
...
FROM NewEstablished ne  
INNER JOIN BlindJob BJ ON ...
WHERE ... 

이건 완벽하게 작동한다.

그러나 파생 컬럼을 추가해야 합니다. 이는 다음 비율입니다.p3count/intakeX* 100. 두 파생값이 모두 10진수이지만 선택 항목에서 참조 방법을 찾을 수 없습니다.

SELECT ....,
...,
SUM(BJ.intake) as intakeX,
(SELECT SUM(ibj.intake) FROM ibj WHERE ibj.p2p3 = 'P3' AND ne.see_id = ibj.ee_id ) as p3count,
(p3count / intakeX * 100) as ratio, 
...,
...
FROM NewEstablished ne  
INNER JOIN BlindJob BJ ON ...
WHERE ... 

그러면 다음과 같은 오류가 반환됩니다.p3count/intakeX알 수 없는 열입니다.

이러한 파생된 선택 열이 FROM 테이블의 일부로 설정된 것을 다른 곳에서 확인했습니다(이 경우).ne하지만 그것 역시 효과가 없는 것 같습니다.

이러한 SELECT 값을 어떻게 참조하여 새 출력 열로 추가 계산을 수행할 수 있습니까?

출력 예:

intakeX = 25
p3count = 2
ratio = 8

쿼리를 서브쿼리로 사용하여 새 열을 계산할 수 있습니다.

select t.*,
  (t.p3count / t.intakeX * 100) as ratio
from (
  <your query>
) t

또는 MySql 8.0+의 경우CTE:

with CTE as (
  <your query>
)
select *,
  (p3count / intakeX * 100) as ratio
from cte

다른 옵션은 동일한 식을 반복하는 것입니다.

SELECT ....,
...,
SUM(BJ.intake) as intakeX,
(SELECT SUM(ibj.intake) FROM ibj WHERE ibj.p2p3 = 'P3' AND ne.see_id = ibj.ee_id ) as p3count,
(
  (SELECT SUM(ibj.intake) FROM ibj WHERE ibj.p2p3 = 'P3' AND ne.see_id = ibj.ee_id ) / 
  SUM(BJ.intake) * 
  100
) as ratio, 
...,
...
FROM NewEstablished ne  
INNER JOIN BlindJob BJ ON ...
WHERE ... 

언급URL : https://stackoverflow.com/questions/61661233/mariadb-how-to-find-mathematical-calculation-based-on-derived-results-in-select

반응형