2011-04-07 5 views
6
SELECT MIN(retail) 
FROM books 
WHERE category = 'COMPUTER' 

는 잘 작동하지만 내가 선택 등의 제목을 포함 할 때 :ORA-00937 :하지 단일 그룹의 그룹 기능

SELECT MIN(retail), title 
FROM books 
WHERE category = 'COMPUTER' 

을 그렇지 않습니다. 왜? 어떻게 작동 시키는가?

+2

당신은 일반 영어, 어떻게 구체적으로 무엇을할까요? –

+1

[SQL은 단일 그룹 그룹 기능이 아님] 가능한 복제본 (http://stackoverflow.com/questions/1795198/sql-not-a-single-group-group-function) –

답변

8

의 Rhys의 대답은 그게 무슨 뜻인지,하지만 당신이 원하는 수도 경우, 올바른지 title (들) 여기서 retail=MIN(retail), 그 표현은 그 대답 얻는 방법을 제시한다 (당신은 SQL의 최신 버전을 사용하는 경우)

SELECT title, retail 
FROM books 
WHERE category = 'COMPUTER' 
AND retail = (SELECT MIN(retail) FROM books WHERE category = 'COMPUTER') 

당신이 WITH 절을 사용할 수 있습니다 중복을 줄이기 위해 :

;WITH ComputerBooks AS (
    SELECT title, retail 
    FROM books 
    WHERE category = 'COMPUTER') 
SELECT title, retail 
FROM ComputerBooks 
WHERE retail = (SELECT MIN(retail) FROM ComputerBooks) 

Sample I used to confirm syntax.

+0

그게 내가 의미하는 바입니다. – user490735

+1

왜 그런 중복 구조가 필요합니까? – user490735

+0

각 열의 조건을 지정해야하는 것처럼 보입니다. 그런 다음보다 일반적인 조건 (제목 FROM 서적 WHERE category = 'COMPUTER')이보다 구체적으로 좁혀졌습니다. 그런데 하나의 열에 대해 특정 조건이 주어지면 검색된 레코드의 다른 열을 지정할 수있는 구문을 사용하지 않는 이유는 무엇입니까? – user490735

6

MIN은 레코드 그룹에 적용되므로 어떤 레코드 그룹을 의미하는지 말해야합니다.

각 타이틀을 의미하는 경우, 소매의 최소를 보여, 당신이 필요합니다

SELECT MIN(retail), title FROM books 
WHERE category = 'COMPUTER' 
GROUP BY title 
관련 문제