2014-06-22 4 views
0

저는 이것에 대해 조금 분실했습니다. 같은 문자로 시작하는 이름의 수를 나열하고 그 첫 번째 동일한 문자가 들어있는 이름의 총량을 찾고 싶습니다. 예를 들어비슷한 값을 기반으로하는 행 수를 계산하십시오.

: 그래서 'B'와 문자 'A', 10로 시작하는

name | total 
-------|-------- 
A  | 12 
B  | 10 
C  | 8 
D  | 7 
E  | 3 
F  | 2 
    ... 
Z  | 1 

12 명.

이것은 내가 지금까지

SELECT 
LEFT(customers.name,1) AS 'name' 
FROM customers 
WHERE 
customers.name LIKE '[a-z]%' 
GROUP BY name 

그러나, 나는 값처럼 기반으로 열을 추가 할 방법 확실 해요있을 것입니다.

+1

'그룹 기준'에서 별칭을 참조 할 수 없습니다. –

답변

3

이 당신을 위해 작동합니다 :

SELECT 
    LEFT(customers.name,1) AS 'name', 
    COUNT(*) AS NumberOfCustomers 
FROM customers 
WHERE 
    customers.name LIKE '[a-z]%' 
GROUP BY LEFT(customers.name,1) 

편집 :는 설명을 잊어 버렸; 많은 사람들이 이미 언급했듯이 GROUP BY 연산은 실제로 SELECT 이전에 발생하므로 별칭을 알지 못하기 때문에 계산 자체와 그룹 별 별칭을 그룹화해야합니다. COUNT 부분은 쉽게 알아낼 수 있습니다. 희망이 도움이됩니다.

2

이름을 세지 않고 첫 글자 만 집계합니다. 그래서 당신은하지 group by name해야하지만 첫 글자로 그룹

SELECT LEFT(name, 1) AS name, count(*) 
FROM customers 
GROUP BY LEFT(name, 1) 

SQLFiddle

관련 문제