복붙노트

[SQL] 첫 번째 문자로 그룹

SQL

첫 번째 문자로 그룹

나는 오라클 SQL에서 쿼리에 문제가 있습니다.

나는 직원 테이블의 FIRST_NAME 열 수 있습니다. 나는 FIRST_NAME의 첫 번째 문자에 따라 내 기록 그룹화하려는.

예를 들어, 내가 26 개 기록, 이름 하나를 가지고 = '앨리스', 이름을 가진 하나 = 등 각 이름의 첫 번째 문자의 알파벳 아래에 '밥'. 쿼리 후, 한 직원이 각각 26 개 그룹이 있어야합니다.

나는 다음을 시도했지만 작동하지 않습니다 :

SELECT employee_id, (SUBSTR(first_name,1,1)) AS alpha FROM employees
GROUP BY alpha;

name_which_starts_from       employees  
A                            10  
B                            2  
C                            4  
D                            9  
E                            3  
G                            3  
H                            3  
I                            2  
J                            16  
K                            7  
L                            6  
M                            6  
N                            4  
O                            1  
P                            6  
R                            3  
S                            13  
T                            4  
V                            2  
W                            3  

해결법

  1. ==============================

    1.당신이 직장에 그렇게하려는 경우 EMPLOYEE_ID에 대한 몇 가지 집계 기능을 수행해야하기 때문에 귀하의 쿼리는 잘못된 것입니다.

    당신이 직장에 그렇게하려는 경우 EMPLOYEE_ID에 대한 몇 가지 집계 기능을 수행해야하기 때문에 귀하의 쿼리는 잘못된 것입니다.

    처럼:

    select substr(first_name,1,1) as alpha, count(employee_id)
      from employees
     group by substr(first_name,1,1)
    

    정확히 무엇을 달성하려고?

  2. ==============================

    2.당신이 SELECT 투사에 employee_id입니다 가질 수 있도록, 집계 함수가 아닙니다 모든 그룹화해야합니다. 또한 FIRST_NAME 단지 첫 번째 문자로 그룹이 필요합니다. 이런 식으로 뭔가 작업을해야합니다 :

    당신이 SELECT 투사에 employee_id입니다 가질 수 있도록, 집계 함수가 아닙니다 모든 그룹화해야합니다. 또한 FIRST_NAME 단지 첫 번째 문자로 그룹이 필요합니다. 이런 식으로 뭔가 작업을해야합니다 :

    SELECT  SUBSTR(first_name, 1, 1) AS alpha, COUNT(*) AS employee_count
    FROM    employees
    GROUP   BY SUBSTR(first_name, 1, 1);
    

    그 것이 이름의 첫 글자로 그룹 및 해당 그룹에 속하는 직원의 수를 보여줍니다.

  3. ==============================

    3.당신이 다음 26 개 첫 번째 열에으로 A, B, C로 반환 된 레코드와 구분 된 목록에있는 모든 직원의 ID를 포함하는 두 번째 열을 원하는 것 거의 소리가 난다. 그래서 질문 468990 참조 및 / 또는 경우이 톰 링크를 요청합니다. 같은 뭔가 (테스트되지 않은)

    당신이 다음 26 개 첫 번째 열에으로 A, B, C로 반환 된 레코드와 구분 된 목록에있는 모든 직원의 ID를 포함하는 두 번째 열을 원하는 것 거의 소리가 난다. 그래서 질문 468990 참조 및 / 또는 경우이 톰 링크를 요청합니다. 같은 뭔가 (테스트되지 않은)

    SELECT SUBSTR(first_name,1,1), TO_STRING( CAST( COLLECT( employee_id ) AS ntt_varchar2 ) ) AS empIDs
    FROM   employees
    GROUP  BY
    SUBSTR(first_name,1,1);
    
  4. ==============================

    4.나는 비슷한 문제를 가지고 문으로이 문제를 해결 :

    나는 비슷한 문제를 가지고 문으로이 문제를 해결 :

    S ASC에 의해 S 명령에 의해 table_words 군으로부터 SUBSTR S 등 (워드, 1, 1), 카운트 (워드)을 선택

  5. ==============================

    5.당신이 그룹화하는 경우, 집계되지 않은 사용자의 선택 목록에 표시되는 모든 열은 (employee_id입니다하지 않는)도 절 "에 의해 그룹의"에 표시해야합니다.

    당신이 그룹화하는 경우, 집계되지 않은 사용자의 선택 목록에 표시되는 모든 열은 (employee_id입니다하지 않는)도 절 "에 의해 그룹의"에 표시해야합니다.

    당신은 당신이하려고하는 어떤 명확히 수 있을까?

  6. ==============================

    6.레일 / 포스트 그레스에서 그 같은 힘 모습 뭔가

    레일 / 포스트 그레스에서 그 같은 힘 모습 뭔가

    group_clause = 'UPPER(LEFT(name, 1))'
    Division.group(group_clause).order(group_clause).pluck(group_clause, 'COUNT(id)')
    
  7. ==============================

    7.난 내가 당신이 뭘 하려는지 알고 있다고 생각 ...

    난 내가 당신이 뭘 하려는지 알고 있다고 생각 ...

    당신은 칼럼 '편지'와 작은 참조 테이블을 만들어야합니다 (문자, SORT_ORDER)

    당신은 당신의 쿼리를해야

    , l.letter를 선택 직원으로 (e.id) 계산 문자 l에서 외부 l.letter = SUBSTR에 직원 E 가입 좌 (e.first_name 1,1)

    다른 대답은 이름에 특정 문자로 어떤 직원이없는 경우 당신에게 예기치 않은 결과를 줄 것이다 게시 ...

  8. from https://stackoverflow.com/questions/666525/group-by-first-character by cc-by-sa and MIT license