SET BBB = REPLICATE('0', 5 - LEN(BBB)) + BBB
또는
Update AAA
SET BBB = Right('00000' + BBB, 5)
SELECT select_list FROM ... [WHERE ...] GROUP BY grouping_column_reference [, grouping_column_reference]...GROUP BY 절 은 테이블에서 선택된 모든 열에서 같은 값을 소유한 행을 그룹화하는 데 사용됩니다. 열의 열거 순서는 상관 없습니다. 이것은 일반적인 값을 가지는 각각의 행 집합을 그룹 내의 모든 행을 대표하는 1 개의 그룹 행에 정리 효과가 있습니다. 그러면 출력 중복을 제거하고, 또한 이들 그룹에 적용되는 집계가 계산됩니다. 예를 들면 다음과 같습니다.
=> SELECT * FROM test1; x | y ---+--- a | 3 c | 2 b | 5 a | 1 (4 rows) => SELECT x FROM test1 GROUP BY x; x --- a b c (3 rows)
=> SELECT x, sum(y) FROM test1 GROUP BY x; x | sum ---+----- a | 4 b | 5 c | 2 (3 rows)위에서 sum()은 그룹 전체에 대해 단일 값을 계산하는 집계 함수입니다. 사용할 수 있는 집계 함수에 대한 자세한 내용은 섹션 9.18 을 참조하십시오.
Tip : 집계식을 사용하지 그룹화는 열의 중복되지 않는 값의 집합을 효율적으로 계산합니다. 이것은 DISTINCT 절의 사용과 동일합니다 ( 섹션 7.3.3 을 참조하십시오).
SELECT product_id, p.name, (sum(s.units) * p.price) AS sales FROM products p LEFT JOIN sales s USING (product_id) GROUP BY product_id, p.name, p.price;이 예제에서는 product_id 열, p.name 열, p.price 열은 반드시 GROUP BY 절에 지정해야 합니다. 왜냐하면 이들은 문의 선택 목록에서 사용되고 있기 때문입니다. (products 테이블을 어떻게 설정 하느냐에 따라 이름과 가격을 전부 product ID에 종속시킬 수 있으므로 이론적으로 이들을 그룹화 할 필요를 없앨 수 있습니다. 그러나, 이것은 구현 되지 않았습니다.) s.units 열은 GROUP BY로 지정할 필요가 없습니다. 이것은 각 제품의 매출 계산 집약 식 (
sum(...)
) 안에서만 사용되기 때문입니다. 이 질문은 각 제품에 대해 제품의 전체 판매에 관한 전체 행을 반환합니다. SELECT select_list FROM ... [WHERE ...] GROUP BY ... HAVING boolean_expression
HAVING 절의 식은 그룹화된 식과 그룹화되지 않은 식 (이 경우에는 집계 함수가 필요합니다)을 모두 볼 수 있습니다. => SELECT x, sum(y) FROM test1 GROUP BY x HAVING sum(y) > 3; x | sum ---+----- a | 4 b | 5 (2 rows) => SELECT x, sum(y) FROM test1 GROUP BY x HAVING x < 'c'; x | sum ---+----- a | 4 b | 5 (2 rows)
SELECT product_id, p.name, (sum(s.units) * (p.price - p.cost)) AS profit FROM products p LEFT JOIN sales s USING (product_id) WHERE s.date > CURRENT_DATE - INTERVAL '4 weeks' GROUP BY product_id, p.name, p.price, p.cost HAVING sum(p.price * s.units) > 5000;위의 예에서, WHERE 절은 그룹화되지 않은 열을 기준으로 행을 선택하고 있는 (이 식은 최근 4 주간의 매출만이 참입니다) 반면, HAVING 은 출력을 매출이 5000 초과의 그룹으로 제한하고 있습니다. 집계식이 문의에서 항상 같을 필요가 없다는 것에주의하십시오.