2012-06-26 2 views
3

Oracle SQL에서 일반 열의 측면을 따라 개수 (*) 열을 반환하려면 어떻게합니까? 내가 좋아하는 것 무엇 Oracle SQL 반환 횟수 (*) 열이 일반 열의 측면에 있습니까?

select count(*) from TABLE where username = 'USERNAME'; 

가 작동 : 작동 무엇

select username,count(*) from TABLE where username = 'USERNAME'; 

그래서 내가 계수의 측면을 따라 이름을 원하는는, 다수의 사용자 이름을 나열 다른 쿼리에이 확장 그리고 그들의 기록의 수.

오류 :

ORA-00937: not a single-group group function 
00937. 00000 - "not a single-group group function" 
*Cause:  
*Action: 
Error at Line: 7 Column: 7 

질문 :

그래서

, 내가 그것을 어떻게해야합니까?

+0

이것은 오라클입니다. 맞습니까? –

+0

@ JeremyPridemore, Oracle, 네. – Xonatron

답변

11
SELECT username,count(*) from TABLE WHERE username='USERNAME' GROUP BY username 

트릭을해야합니다!

첫 번째 쿼리가 작동하는 이유는 MySQL이 자동으로 해당 쿼리를 집계 쿼리로 변환 할 수 있기 때문입니다. 사용자 이름 = 'USERNAME'인 행을 모두 계산한다는 것을 "이해하고"있기 때문입니다. 두 번째 쿼리는 충분히 명확하지 않습니다. 쿼리에서 선택한 행에 대해 집계 함수를 수행하려고하지만 쿼리의 행도 필요합니다. 내 쿼리를 사용하면 집합에서 하나의 사용자 이름 만 반환 될 것으로 예상되므로 집계가 문제가되지 않습니다.

+0

13 분이 지나면 승인 된 답변을 받게됩니다! :) 감사! – Xonatron

+5

필자는 필터를 '어디에서'둡니다. 아마 옵티마이 저는 어쨌든 그것을 밀어 낼 것입니다. –

+2

@MartinSmith 동의했다.'WHERE'는 여전히 더 이해가됩니다 - 나는 집계에만'HAVING'을 선호합니다; 목적을 명확하게합니다. – Dan