source

동일한 데이터를 가진 SQL의 최대 개수(*) 오류

factcode 2022. 11. 26. 13:55
반응형

동일한 데이터를 가진 SQL의 최대 개수(*) 오류

가장 많이 구매한 사용자를 얻기 위해 SQL 쿼리를 작성했습니다.

SELECT name, count(*) as C
FROM sells
GROUP BY user_id
ORDER BY C
LIMIT 1

단, 구매 수가 같은 사용자가 2명 있는 경우 이 쿼리는 검출할 수 없습니다.해결책은 무엇인가?

서브쿼리 시행:

SELECT name, count(*) as C
FROM sells
GROUP BY user_id
HAVING C >= ALL 
    (SELECT count(*)
     FROM sells
     GROUP BY user_id)

이 기능은 모든 SQL 버전에서 사용할 수 있습니다.LIMIT서브쿼리에서

최대 카운트를 가져오는 하위 쿼리를 작성합니다.그 후 사용HAVING해당 카운트를 가진 모든 행을 선택합니다.

SELECT name, COUNT(*) AS c
FROM sells
GROUP BY user_id
HAVING c = (SELECT COUNT(*) c
            FROM sells
            GROUP BY user_id
            ORDER BY c DESC
            LIMIT 1)

또는 서브쿼리 간 결합으로 수행할 수 있습니다.

SELECT t1.*
FROM (SELECT name, COUNT(*) AS c
      FROM sells
      GROUP BY user_id) AS t1
JOIN (SELECT COUNT(*) AS c
      FROM sells
      GROUP BY user_id
      ORDER BY c DESC
      LIMIT 1) AS t2
ON t1.c = t2.c
SELECT name, COUNT(*)
FROM sells
GROUP BY user_id
HAVING COUNT(*) = ( SELECT MAX(C) FROM ( SELECT COUNT(*) AS C FROM sells GROUP BY user_id ) )

사용하고 있습니다.LIMIT 1를 참조해 주세요.출력에 포함되는 레코드의 수를 1로 제한합니다.출력의 모든 레코드를 보려면 이 항목을 삭제하십시오.LIMIT.

같은 카운트마다 행이 1개만 표시되어야 하는 경우 이 쿼리를 다음과 같이 수정할 수 있습니다.

SELECT GROUP_CONCAT(name), count(*) as C
FROM sells
GROUP BY user_id
ORDER BY C
LIMIT 1

이것에 의해, 같은 카운트를 가지는 양쪽의 이름이 연결됩니다.

언급URL : https://stackoverflow.com/questions/44662730/error-in-max-count-in-sql-with-same-data

반응형