반응형
에일리어스별 그룹화(Oracle)
별칭을 사용하여 쿼리를 '그룹화'하는 방법. 예:
select count(*), (select * from....) as alias_column
from table
group by alias_column
'alias_column' : INVALID_IDENTIFIER 오류 메시지가 나타납니다.왜요? 이 쿼리를 어떻게 그룹화할까요?
select
count(count_col),
alias_column
from
(
select
count_col,
(select value from....) as alias_column
from
table
) as inline
group by
alias_column
그룹화는 일반적으로 GROUP BY 절에서 해당 식을 반복하면 작동합니다.에일리어스만 언급하는 것은 불가능합니다.SELECT 스텝은 쿼리 실행의 마지막 단계이기 때문에 그룹화는 에일리어스 이름이 아직 정의되어 있지 않은 경우에 실행됩니다.
하위 쿼리의 결과를 기준으로 그룹화하려면 위에서 설명한 것처럼 약간 우회하여 중첩된 쿼리를 사용해야 합니다.
에일리어스 컬럼에 쿼리를 네스트합니다.
select count(*), alias_column
from
( select empno, (select deptno from emp where emp.empno = e.empno) as alias_column
from emp e
)
group by alias_column;
select count(*), (select * from....) as alias_column
from table
group by (select * from....)
Oracle에서는 그룹 기준 절에 별칭을 사용할 수 없습니다.
Oracle에서 별칭을 사용하려면 별칭이 사용되는 시점에서 쿼리에 의해 별칭이 정의되었는지 확인해야 합니다.
가장 간단한 방법은 원래 쿼리를 하위 쿼리로 처리하는 것입니다. 이 경우,
select count(*), (select * from....) as alias_column
from table
group by (select * from....)
된다
select count, alias_column
from
(select count(*) as count, (select * from....) as alias_column
from table)
group by alias_column
퍼포먼스의 의미에 대해서는 말할 수 없지만, 쿼리에서 에일리어스를 재사용하려고 할 때는 매우 빠르게 기입할 수 있습니다.모든 것을 괄호 안에 넣고 한 단계 위로 점프합니다.
에일리어스를 사용할 필요가 없는 경우는, 다음과 같이 실시할 수 있습니다.
select
EXTRACT(year from CURRENT_DATE), count(*) from something
group by EXTRACT(year from CURRENT_DATE)
order by EXTRACT(year from CURRENT_DATE)
에일리어스와 서브쿼리를 사용하는 대신.
언급URL : https://stackoverflow.com/questions/268429/group-by-alias-oracle
반응형
'programing' 카테고리의 다른 글
각도 Js 통화, 기호 유로 이후 (0) | 2023.04.06 |
---|---|
get_adjacent_post()를 커스텀 투고 유형 간에 동작시킵니다. (0) | 2023.04.01 |
VSCode에서 환경 변수를 launch.json에 추가하려면 어떻게 해야 합니까? (0) | 2023.04.01 |
텍스트 에디터에서 JavaScript 개체를 유효한 JSON으로 빠르게 변환할 수 있는 방법이 있습니까? (0) | 2023.04.01 |
C#의 속성 이름에 '+'를 추가하려면 어떻게 해야 합니까? (0) | 2023.04.01 |