반응형
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
반응형
'programing' 카테고리의 다른 글
Java 클래스가 동등한 기능을 구현해야 하는 이유는 무엇입니까? (0) | 2022.10.23 |
---|---|
zend 프레임워크에서 정확한 SQL 쿼리를 인쇄하는 방법 (0) | 2022.10.23 |
mariadb-server에서 apt-get 업그레이드가 시간대로 인해 항상 실패함 (0) | 2022.10.23 |
리스트의 이해가 다른 경우 (0) | 2022.10.23 |
Visual Studio 오류:편집을 위해 저장 프로시저를 로드할 수 없습니다. (0) | 2022.10.23 |