Oracle에서는 쿼리 결과를 그룹화하기 위해 "그룹화 기준" 키워드를 SELECT 문과 함께 사용해야 합니다. 행은 행 또는 표현식 값별로 그룹화된 요약 행으로 결합될 수 있습니다. "SELECT 필드 목록 FROM 데이터 테이블 이름 GROUP BY 필드 이름;".
이 튜토리얼의 운영 환경: Windows 7 시스템, Oracle 11g 버전, Dell G3 컴퓨터.
GROUP BY 키워드는 하나 이상의 필드를 기반으로 쿼리 결과를 그룹화할 수 있습니다.
GROUP BY 절은 SELECT 문에서 행 또는 표현식의 값을 기준으로 행을 그룹화된 요약 행으로 결합하는 데 사용됩니다. GROUP BY 절은 각 그룹에 대해 하나의 행을 반환합니다.
GROUP BY 절은 일반적으로 AVG(), COUNT(), MAX(), MIN() 및 SUM()과 같은 집계 함수와 함께 사용됩니다. 이 경우 집계 함수는 각 그룹화에 대한 요약 정보를 반환합니다. 예를 들어, 여러 제품 카테고리가 있는 경우 AVG() 함수는 각 카테고리에 있는 제품의 평균 가격을 반환합니다.
다음은 Oracle GROUP BY 절의 구문을 보여줍니다.
SELECT 字段列表 FROM 数据表名 GROUP BY 字段名;
GROUP BY 절은 FROM 절 뒤에 나타납니다. WHERE 절이 제공되는 경우 GROUP BY 절은 WHERE 절 앞에 배치되어야 합니다.
GROUP BY 절은 c1, c2 및 c3과 같은 그룹화 열의 값을 기준으로 행을 그룹화합니다. GROUP BY 절에는 집계 또는 그룹화된 열만 포함될 수 있습니다.
한 번에 계산해야 하는 여러 그룹화 수준을 지정하려면 다음 ROLLUP 구문을 사용하세요.
SELECT 字段列表 FROM 数据表名 GROUP BY ROLLUP(c1,c2,c3);
다음 순서
및 order_items 데모용 테이블: orders
和order_items
表进行演示:
1. Oracle GROUP BY的基本示例
以下语句使用GROUP BY
子句在orders
表中查找唯一的订单状态:
SELECT status FROM orders GROUP BY status;
执行上面查询语句,得到以下结果 -
该语句与使用DISTINCT
运算符的以下语句具有相同的效果:
SELECT DISTINCT status FROM orders;
2. Oracle GROUP BY聚合示例
以下语句返回客户的订单数量:
SELECT customer_id, COUNT( order_id ) FROM orders GROUP BY customer_id ORDER BY customer_id;
执行上面查询语句,得到以下结果 -
在这个例子中,我们按客户编号来分组订单,并使用COUNT()
函数返回每个组的订单数量。
要获得更有意义的数据,可以按以下方式将orders
表与customers
表一起连接:
SELECT name, COUNT( order_id ) FROM orders INNER JOIN customers USING(customer_id) GROUP BY name ORDER BY name;
执行上面查询语句,得到以下结果 -
3. Oracle GROUP BY表达式示例
以下示例按年份对订单进行分组,并返回每年订单的数量。参考以下查询语句 -
SELECT EXTRACT(YEAR FROM order_date) YEAR, COUNT( order_id ) FROM orders GROUP BY EXTRACT(YEAR FROM order_date) ORDER BY YEAR;
执行上面查询语句,得到以下结果 -
在这个例子中,我们使用EXTRACT()
函数从订单的日期中获取年份信息。
与前面的例子不同,这里使用了一个在GROUP BY
子句中返回年份的表达式。
4. Oracle GROUP BY带有ROLLUP示例
以下语句计算销售额并按customer_id
,status
和(customer_id
,status
1. Oracle GROUP BY의 기본 예
다음 문에서는 GROUP BY를 사용합니다. code>절은 <code>orders
테이블에서 고유한 주문 상태를 찾습니다. SELECT
customer_id,
status,
SUM( quantity * unit_price ) sales
FROM
orders
INNER JOIN order_items
USING(order_id)
GROUP BY
ROLLUP(
customer_id,
status
);
위 쿼리 문을 실행하고 다음 결과를 얻습니다.
DISTINCT 연산자 효과: 🎜rrreee🎜🎜<span style="max-width:90%">2. Oracle GROUP BY 집계 예</span>🎜🎜🎜다음 문은 고객의 주문 수량을 반환합니다. 🎜rrreee🎜Execute 위 쿼리문에서 다음 결과를 얻습니다.🎜🎜<img src="https://img.php.cn/upload/image/272/423/267/164749220659479%EC%98%A4%EB%9D%BC%ED%81%B4%20%EA%B7%B8%EB%A3%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95" title="164749220659479오라클 그룹을 사용하는 방법" alt="오라클 그룹을 사용하는 방법">🎜🎜이 예에서는 고객 번호별로 주문을 그룹화하고 <code>COUNT()
함수를 사용하여 각 그룹의 주문 수량을 반환합니다. 🎜🎜보다 의미 있는 데이터를 얻으려면 orders
테이블과 customers
테이블을 다음과 같이 연결하면 됩니다. 🎜rrreee🎜위 쿼리 문을 실행하면 다음과 같은 결과를 얻을 수 있습니다. 🎜 🎜EXTRACT()
함수를 사용하여 주문 날짜로부터 연도 정보를 가져옵니다. 🎜🎜이전 예시와 다르게 GROUP BY
절에 연도를 반환하는 표현식을 사용합니다. 🎜🎜🎜4. ROLLUP 예시를 사용한 Oracle GROUP BY🎜🎜🎜다음 문은 customer_id
, status별로 매출을 계산합니다.
및 (customer_id
, status
) 그룹화: 🎜rrreee🎜위 쿼리 문을 실행하고 다음 결과를 얻습니다. 🎜🎜🎜🎜🎜권장 튜토리얼: " 🎜오라클 튜토리얼🎜"🎜위 내용은 오라클 그룹을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!