SQL 절“GROUP BY 1”은 무엇을 의미합니까?


202

누군가가 GROUP BY절이 다음 문장으로 구성된 SQL 쿼리를 보냈습니다 GROUP BY 1.

오타일까요? 별명이없는 열이 없습니다. 1. 이것은 무엇을 의미 할 수 있습니까? 이것이 오타 여야한다고 가정 할 수 있습니까?


6
오타가 아니며 결과 집합의 첫 번째 열
Lamak

9
이 구문은 이식이 불가능합니다. mysql 이외의 데이터베이스에서는 다르게 동작합니다. 예를 들어 Oracle에서는 상수로 취급됩니다.
Russell Reed

2
@RussellReed 예. 불행히도 (별명을 사용하는 것이 때로는 매우 유용하기 때문에) ansi sql은 열 서수로 그룹화 할 수 없습니다. 그 이유는 그룹화가 투영 전에 발생하기 때문입니다. 그러나 ... 우리가 수십 줄의 행으로 표현을 그룹화 때 무엇을 .. 우리는 .. 끝낼 mutiples 최종 SQL 문에서 라인의 수십.
javadba

답변:


231

그것은 무엇을 불렀는지에 관계없이 첫 번째 열을 기준으로 그룹화하는 것을 의미합니다. 당신도 같은 작업을 수행 할 수 있습니다 ORDER BY.


74
SELECT account_id, open_emp_id
         ^^^^        ^^^^
          1           2

FROM account
GROUP BY 1;

위의 쿼리 GROUP BY 1first column in select statement입니다 account_id.

에서 지정할 수도 있습니다 ORDER BY.

참고 : ORDER BY 및 GROUP BY의 숫자는 항상 0이 아닌 1로 시작합니다.


25

필드 이름을 기준으로 그룹화하는 것 외에도 테이블 내에서 필드의 서수 또는 위치를 기준으로 그룹화 할 수 있습니다. 1은 이름에 관계없이 첫 번째 필드에 해당하고 2는 두 번째 필드에 해당합니다.

테이블 / 뷰 구조가 변경 될 수 있기 때문에 특정 항목으로 그룹화하는 경우 일반적으로 좋지 않은 조언입니다. 또한 테이블 필드를 암기하지 않은 경우 SQL 쿼리가 수행하는 작업을 빠르게 이해하기 어려울 수 있습니다.

고유 한 세트를 반환하거나 임시 조회를 신속하게 수행하는 경우 타이핑을 줄이는 좋은 속기 구문입니다. 어떤 시점에서 쿼리를 다시 실행하려는 경우 향후 혼동과 예기치 않은 합병증 (구성표 변경으로 인해)을 피하기 위해 쿼리를 교체하는 것이 좋습니다.


10
"이 작업을 수행하지 마십시오"는 +1이며이를 피하는 가장 좋은 이유는 읽을 수 없다는 것입니다.
Yuck


5

즉, select 절의 첫 번째 열 sql 그룹을 의미합니다. 우리는 항상 이것 GROUP BY 1과 함께 ORDER BY 1사용할 GROUP BY 1,2,3..수 있습니다. 일부가 선택 열을 수정했지만 시각화되지 않은 경우


4

group by 절 뒤에 놓은 열 위치별로 그룹화됩니다.

예를 들어 ' SELECT SALESMAN_NAME, SUM(SALES) FROM SALES GROUP BY 1' 를 실행 하면 그룹화됩니다 SALESMAN_NAME.

이를 수행하는 한 가지 위험은 ' Select *' 를 실행 하고 어떤 이유로 열이 다른 테이블을 다른 순서로 다시 작성하면 예상과 다른 결과를 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.