2011-04-30 2 views
1

에 따라 선택 사람들의 이름은 :MySQL은 - 대부분의 발생을 감안할 때

id, firstlast 필드 names을했다.

firstlast이 서로 다른 필드 일 때 어떻게 발생하여 상위 5 위의 가장 인기있는 사람들을 찾을 수 있습니까? 이것은 내가 지금 가지고있는 작동하지 않는 코드입니다 ...

`SELECT *, COUNT(first) AS occurrences FROM `names` GROUP BY first ORDER BY occurrences DESC LIMIT 5` 

어떤 도움을 주시면 감사하겠습니다!

+1

당신은'무엇을 의미합니까 이름과 값을 별도의 fields'입니까? –

+0

"비 작동 코드"라고 말하면 오류가 발생하거나 잘못된 결과가 발생한다는 의미입니까? – Galz

+0

"\'"인라인 [코드] (http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)의 윤곽을 나타냅니다. 코드 블록의 경우 줄을 4 칸 추가로 들여 씁니다. 또한 "\"를 사용하여 특수 문자를 이스케이프 처리하여 일반 문자로 만들 수 있습니다. 예 :'SELECT * FROM \'foo \''. 설명하는 것처럼 [간결한 코드 샘플] (http://sscce.org/)은 가장 모호하지 않은 방식입니다. 테이블 스키마 ('CREATE')를 보여주십시오. – outis

답변

8

상위 5 처음 이름의 경우, 시도 : 상위 5 이름에 대한

SELECT first, COUNT(*) AS occurrences 
FROM names 
GROUP BY first 
ORDER BY occurrences DESC 
LIMIT 5 

이 시도 :

SELECT first, last, COUNT(*) AS occurrences 
FROM names 
GROUP BY first, last 
ORDER BY occurrences DESC 
LIMIT 5 
+0

또는 결과에서 하나의 필드로 이름을 가져 오려면 다음과 같이하십시오. 이름으로 distinct concat_ws ('', first, last)를 선택하고 이름에서 count (*)로 num을 선택하십시오. – Thilo

+0

이것은 완벽합니다. 도움을 주셔서 감사합니다! – RANGER

+0

이 사람은 완벽하게 작동했습니다. 내가 이것을 발견 할 때까지 나는 질의와 혼잣말을했다. – Cyprus106