나는, COUNT (*)를 참조 전체로 저장하고 나중에 참조하기 위해 노력하고 있지만,이 예에 대한참조 카운트 (*)
작동하지 않습니다 :
select ((count(*) as total)-count(a)),
(total - count(b)),
(total - count(c))
from table;
무엇이 잘못 되었습니까?
나는, COUNT (*)를 참조 전체로 저장하고 나중에 참조하기 위해 노력하고 있지만,이 예에 대한참조 카운트 (*)
작동하지 않습니다 :
select ((count(*) as total)-count(a)),
(total - count(b)),
(total - count(c))
from table;
무엇이 잘못 되었습니까?
SELECT (count(*) - count(a)) AS Column1
,(count(*) - count(b)) AS Column2
,(count(*) - count(c)) AS Column3
from table;
무엇이 잘못 되었나요? SQL에서는 동일한 select
문에서 열 별칭을 사용할 수 없습니다.
select a as b, b as a, b - c
무엇에 세 번째 b
참조 않습니다이 같은 것들에 의한 모호성을 방지하는 것입니다? 표준은 명확합니다 : 표의 열을 나타냅니다.
또한 표현식의 중간에 열 별칭을 정의 할 수 없습니다. 변수는 아니고 결과 집합의 열 이름입니다.
:select (count(*) - count(a)),
(count(*) - count(b)),
(count(*) - count(c))
from table;
난 그냥 당신이 하위 쿼리를 사용하여 다른 SQL 언어에서와 마찬가지로 당신이 하이브에서이 작업을 수행 할 수 있다고 생각 :
당신은 표현 count(*)
와 단어 total
을 대체하여이 문제를 해결할 수 있습니다
select (const.total - count(a)),
(const.total - count(b)),
(const.total - count(c))
from table cross join
(select count(*) as total from table) const
하이브에서는 작동하지 않습니다. 어딘가에 카운트 (*)를 저장하고 반복해서 계산하지 않으려합니다. – user2942227
그냥 count (*)를 한 번 저장하고 어딘가에 저장하고 싶습니다. – user2942227