2011-04-20 2 views
2

이 어떻게 트랜잭션의 최대 카운트 수를 조회 할 수있는 목록의 최대 개수를 얻을 수 ... 내 코드는 다음과 같습니다 당신이 찾고있는 경우SQL 쿼리는 다음과 같은 방법

SELECT customer_id, COUNT(customer_id) 
FROM rental 
GROUP BY customer_id 
HAVING MAX(COUNT(customer_id)); //I need to get the MAXIMUM COUNT of the list 
+2

rsbarro의 답변을 사용하는 것보다 유해야합니까? –

+0

답변을 게시 한 것이 없으면 샘플 데이터가 필요하다고 생각합니다. – rsbarro

답변

2

더 때문에 하나 이상의 고객이 동일한 최대 값을 가질 수 있습니다.

SELECT customer_id, 
     COUNT(customer_id) AS customerrowcount 
FROM rental 
GROUP BY customer_id 
HAVING COUNT(customer_id) = (SELECT COUNT(customer_id) 
          FROM rental 
          GROUP BY customer_id 
          ORDER BY COUNT(customer_id) DESC 
          LIMIT 1) 

을 다음과 같이 선택되는 임의의 고객과 확인있어 그러나 경우에 당신은 당신이 사용하고있는 데이터베이스

+0

을 사용하고 있습니다. 따라서 동일한 최대 계정으로 고객을 갖는 문제를 해결할 수 있습니다. – newbie

+1

두 명의 고객이 다시 방문하게됩니다. 유대 관계를 해결할 사용자를 사용자로부터 찾아야합니다. –

+0

@ConradFrix 제한을 사용하지 않아도 가능합니까? – Achyut

3

rental 테이블에있는 행의 가장 큰 번호와 함께 customer_id, 당신은 사용할 수 있습니다

SELECT customer_id, COUNT(customer_id) as CustomerRowCount 
FROM rental 
GROUP BY customer_id 
ORDER BY COUNT(customer_id) DESC 
LIMIT 1 

위의 쿼리는 상단 행을 선택한 다음 내림차순으로 정렬 각 CUSTOMER_ID의 모든 레코드를 계산하고 있습니다. 고객의 최대 개수는 CustomerRowCount입니다.

편집
콘래드는 두 개 이상의 customer_id 년대 레코드의 같은 번호를 가질 수 있다는 점을 가져왔다. 비즈니스 요구 사항에이 경우 여러 레코드를 반환해야하는 경우 쿼리를 통해 원하는 결과를 얻을 수 있습니다. 하나의 레코드 만 반환해야하는 경우 간단하고 일관된 방법으로 연결을 끊으면 가장 낮은 사용자 인 customer_id을 가져갈 수 있습니다. 그렇게하려면, 당신은 단지에 문하여 순서를 변경할 수 있습니다 :

ORDER BY COUNT(customer_id) DESC, customer_id 
+0

최대 개수를 알아야합니다 – newbie

+0

@newbie 죄송합니다, 찾고있는 것을 이해하지 못하고 있습니다. 누군가가 이미 알아 낸 것이 없다면 몇 가지 샘플 데이터로 질문을 업데이트 할 수 있습니까? – rsbarro

+1

@newbie 두 쿼리가 최대 개수를 제공합니다. 또는 특정 고객에 대한 최대 수입니다. 그러므로 순서에 따라 순서에 따라 순서를 정한 다음 맨 위 행을 선택해야합니다. –

3

시도 :

SELECT customer_id, MAX(COUNT(customer_id)) 
FROM rental 
GROUP BY customer_id; 

또는

SELECT top 1 customer_id, COUNT(customer_id) 
FROM rental 
GROUP BY customer_id 
ORDER BY COUNT(customer_id) DESC 
+0

MAX (COUNT (customer_id))가 작동하지 않습니다. – newbie

+1

두 번째 쿼리의 ORDER BY에 DESC가 누락되었습니다. =] – rsbarro

+0

@rsbarro - 지적 해 주셔서 감사합니다. 보정 된 스탠드. – Kangkan

2

쿼리 MySQL의

SELECT 
    * 
FROM (SELECT 
     customer_id, 
     COUNT(customer_id) AS CountOfCustomer 
     FROM rental 
     GROUP BY customer_id) q1 
ORDER BY CountOfCustomer DESC 
LIMIT 1 
+0

MYSQL – newbie

관련 문제