2013-08-30 2 views
1

의 나는 다음과 같은 SQL SELECT 쿼리를 실행 해요 가정 해 봅시다 :정기적 인 결과와 COUNT (*)

SELECT Name, Age FROM Friends; 

Bilbo|111 
Aragorn|69 
나는에 총 결과 수 를 얻을 수 있도록하고 싶습니다

같은 검색어. 다음 작업을 수행 할 경우
그러나 :

SELECT Count(*),Name, Age FROM Friends; 

2|Aragorn|69 

최종 결과 만 표시됩니다. 모든 결과를 얻고 하나의 SQLite 쿼리로 Count를 얻는 방법이 있습니까?

+1

Aragorn이 태어 났을 때 Bilbo는 41 세 였으므로 Aragorn은 88이 아니라 69 또는 70 정도 였을 것입니다. –

+0

33? @AdrianWragg – Naga

+0

@Naga 당신은 프로도 생각 중입니다. –

답변

2

쉽게 될 것이다 :

SELECT cnt,Name, Age FROM Friends, (SELECT Count(*) as cnt FROM Friends); 

또는 스칼라 하위 쿼리 사용 : 당신이 가지고 그렇지 않으면

SELECT Count(*) OVER(),Name, Age FROM Friends; 

(상호) 가입

SELECT (SELECT Count(*) FROM Friends) as cnt, Name, Age FROM Friends; 
+0

WHERE 절이있는 경우 두 번째 및 세 번째 예제가 어떻게 변경 될지에 대해 의견을 말씀해 주실 수 있습니까? 첫 번째 예는 '근처'(": 구문 오류 '를 반환하므로 지원되지 않는 것 같습니다. =/ – Malabarba

+0

그 이유는 count 쿼리에 대한 조건이기도합니다. OVER 함수를 사용하면 매우 유용합니다. – dnoeth

+0

SQL 초보자의 바보 같은 질문 : 세 번째 옵션에서 Count는 행 하나당 한 번 또는 한 번만 수행됩니까? – Malabarba

1

일반적으로 반환되는 결과 집합 개체는 길이에 대해 쿼리 할 수 ​​있습니다. 따라서 COUNT과 같은 집계 함수를 SQL 쿼리 자체에 넣지 않고 반환되는 행 수를 계산하십시오. 당신의 DBMS는 윈도우 된 집계 기능을 지원하는 경우

+0

유감스럽게도,이 문제를 특별히 피하기 위해 다음과 같은 안드로이드 응용 프로그램을 사용하고 있습니다. SQLite보다 1000 배 더 길어서 행을 계산할 수 있습니다. (사실, 성능을 크게 향상시키기 위해 이미 별도의 SQLite를 사용하고 있습니다.이 질문은 SQLite 쿼리를 2 개로 줄여 성능을 조금 향상시키는 것입니다.) – Malabarba

1

질문을 이해하는 경우 UNION :

를 사용하십시오.
SELECT Name, Age FROM Friends UNION SELECT 'Count', COUNT() FROM Friends; 
+0

(내가 이전에 작성한 주석을 오해하여 삭제했습니다.) 이것은 작동합니다 (COUNT 뒤에'(*) '를 추가하면). – Malabarba

관련 문제