2011-12-22 4 views
4

movies이라는 테이블과 movie_id이라는 열이 있습니다. 그리고 나는 테이블에서 가장 흔히 발생하는 것을 원합니다. movie_id. 열에SQL에서 가장 많은 행을 가진 열의 데이터를 검색합니다.

데이터 예 :이 가장 행을 갖기 때문에

movie_id 
234 
343 
2928 
956 
73 
234 
234 

그래서 결과가 234이어야한다. 나는 결코 이것을 시도한 적이 없으므로 나는 이것이 어떻게 성취 될 수 있는지 정말로 모른다.

+1

SQL 제품은 무엇입니까? MySQL, SQL 서버, Postgres, Oracle? –

+0

@EugenRieck, 크지는 않지만 다른 숫자보다 234가 많습니다. –

+0

크지 않다. 나는 그것이 가치의 수라고 생각한다. 나는 234를 3 번 ​​보았다. –

답변

4

는 SQL에 따라서 당신이 찾고있는 정확하게 이해하는 경우입니다

SELECT * FROM movies 
WHERE 
movie_id=(SELECT movie_id FROM movies GROUP BY movie_id ORDER BY count(*) DESC LIMIT 1) 

같은 수 있습니다. MySQL을 들어

+0

시도해 보겠습니다. – dumbel

3

: SQL-Server의

SELECT movie_id 
FROM movies 
GROUP BY movie_id 
ORDER BY COUNT(*) DESC 
LIMIT 1 

:

SELECT TOP 1 
    movie_id 
FROM movies 
GROUP BY movie_id 
ORDER BY COUNT(*) DESC 

당신은 모든 영화가 반환 될 (상단) 연결하려는 경우

SELECT movie_id 
FROM movies 
GROUP BY movie_id 
HAVING COUNT(*) = 
    (SELECT TOP 1 COUNT(*) 
     FROM movies 
     GROUP BY movie_id 
     ORDER BY COUNT(*) DESC 
    ) 
+2

+1하지만 모두 묶인 영화가 필요한 경우 'WITH TIES' TOP 1 '을 선택하십시오. –

0
SELECT movie_id FROM (
    SELECT 
    movie_id, 
    count(*) AS num 
    FROM <tablename> 
    GROUP BY movie_id 
) AS baseview 
ORDER BY num DESC 
LIMIT 1 
0

SQL 서버 사용 :

SELECT TOP 1 COUNT(*) as cnt 
FROM movies 
GROUP BY(movie_id) 
ORDER BY cnt DESC 
관련 문제