2015-02-05 2 views
0

두 개의 값을 나누는 새 열을 추가하고 이라는 결과를 기존 SQL query에 반환하고 싶습니다.값이있는 새 열 = col a/col b

누군가이 작업 방법을 알려 줄 수 있습니까?

+0

어떤 데이터베이스를 사용하고 있습니까? 질문에 적절하게 태그를 답니다. –

+0

열로 추가해야하는 이유는 무엇입니까? ''a, b, (a/b)를 Foo의 비율로 선택하는 것 '과 같이 계산하는 것이 더 의미가 있습니다. –

+0

@DavidLively, select 문에서이 계산을 반복적으로 수행하면 여러 번 지속되는 것보다 훨씬 나쁜 생각입니다 계산과 함께 데이터베이스의 열. – HLGEM

답변

3

SQL은 산술 연산을 지원합니다

SELECT a, b, 100.0 * a/b AS percentage 
FROM my_table 
WHERE (some condition) 

편집 : 코멘트에 언급 한 바와 같이 b가 0 인 경우
, 우리는 b에 의해 a을 나눌 수 없습니다. 이 엣지 케이스는 명시 적으로 처리되어야합니다. 다음 예제에서 나는이 사건에 대한 null을 반환하지만 실제 문제의 맥락에서 의미가 다른 처리 할 것 :

은 지속 형 계산으로 이것을 가지고 의미가 있습니다 경우가 있습니다
SELECT a, b, CASE WHEN b = 0 THEN NULL ELSE 100.0 * a/b END AS percentage 
FROM my_table 
WHERE (some condition) 
+0

b가 0 일 수있는 경우 "b = 0, 0 else/b * 100 end"일 경우 – Jeremy

+1

'(100.0 * a)/b'를 사용하여 부동 소수점 나누기를 사용하는지 확인하십시오. –

+0

@DStanley true 'dat. – Mureinik

1

아니라 수백만 건의 레코드를 즉시 계산하는 것보다.

테이블 정의에서이 작업을 수행하려는 경우 지속 된 계산 된 열을 사용합니다. 아래 예제는 demonimator의 null 문제를 처리하고 정수 수학 문제도 처리합니다.

alter table mytable 
add [Result] AS (ColA*1.00/NULLIF(ColB,0)) Persisted 

계산 된 열은 데이터베이스에서 가장 많이 사용되지 않는 기능 중 하나입니다. 그들에 대해 알고있는 것이 지불됩니다. 계산을 위해보다 복잡한 시나리오를 트리거로 처리해야 할 수도 있습니다.

관련 문제