반응형
반응형

[MSSQL] update 구문 여러개를 실행하고 그 결과 row의 총 개수를 구하라

DECLARE @TotalAffectedRows INT = 0; -- 총 영향을 받은 행을 저장할 변수

-- 첫 번째 UPDATE 구문
UPDATE your_table
SET column1 = 'value1'
WHERE condition1;

SET @TotalAffectedRows = @TotalAffectedRows + @@ROWCOUNT; -- 영향을 받은 행 수 누적

-- 두 번째 UPDATE 구문
UPDATE your_table
SET column2 = 'value2'
WHERE condition2;

SET @TotalAffectedRows = @TotalAffectedRows + @@ROWCOUNT; -- 영향을 받은 행 수 누적

-- 세 번째 UPDATE 구문
UPDATE your_table
SET column3 = 'value3'
WHERE condition3;

SET @TotalAffectedRows = @TotalAffectedRows + @@ROWCOUNT; -- 영향을 받은 행 수 누적

-- 최종 결과 출력
SELECT @TotalAffectedRows AS TotalAffectedRows;
반응형
반응형

도구 - 옵션 - SQL Server  개체탐색기 - 명령 - 테이블 및 뷰 옵션

 상위 <n<개 행 편집 (선택) 명령의 값 수정

 
조회 및 편집  

상위 n개의 데이터를 정렬하여 조회하고 편집하고 싶을때

 

테이블 우클릭 - 상위 n개 행 편집 - 결과창 우클릭 - 창 -  SQL

SQL 창에서 order by  , where 등 쿼리 작성 

우클릭 - SQL 실행  - 결과창에서 데이터 편집

해당 테이블에서 "상위 200개 편집" 선택 후
조회된 데이터에서 우클릭 팝업 메뉴로 "창" - "조건" 선택해서 
필터에 원하는 조건 넣고 Ctrl + R 누르면 해당 데이터 조회 및 편집 가능합니다. 

 

반응형
반응형

[MSSQL] SELECT INTO - 테이블 또는 임시테이블 복사

 

select * into TEMP_테이블 from 원본테이블 [조건문]

 

 

만약 임시테이블을 생성하여 복사하고 싶다면

 

select * into #TEMP_테이블 from 원본테이블 [조건문]

 

#을 붙여주면된다.

 

##을 붙이면 전역 임시테이블로 생성되면

 

#은 해당 세션에서만 사용가능하며

##은 전역으로써 모든 세션에서 사용 가능하다.

 

임시테이블은 로그아웃 전까지 존재한다.

 

SELECT INTO TEMP TABLE statement syntax

--SELECT INTO TEMP TABLE statement syntax
SELECT * | Column1,Column2...ColumnN 
INTO #TempDestinationTable
FROM Source_Table
WHERE Condition​

 

반응형
반응형

MS-SQL은 기본 설정이 AUTO_COMMIT으로 되어있습니다.

INSERT, UPDATE, DELETE 등 명령어를 사용할 때 COMMIT 명령어를 입력할 필요가 없습니다.

그렇기 때문에 UPDATE, DELETE 쿼리 수행 중 실수를 하게 된다면... 지옥을 경험할 수도 있습니다.. ㅠㅠ

 

예를 들어서 MEMBER라는 테이블이 있다고 가정하겠습니다. 멤버 테이블의 회원 삭제는 이력을 남기기 위해서 소프트 delete처리를 합니다. 이런일이 생기면 안되겠지만, 쿼리를 사용하여 회원을 삭제한다고 가정하겠습니다. 

UPDATE MEMBER
SET DELETED = 1
WHERE MEMBER_SEQ = 1;

 

위와 같이 정상적으로 작성하면 좋겠지만, 우리는 사람이라 가끔 실수를 하곤 합니다.

UPDATE MEMBER
SET DELETED = 1;
WHERE MEMBER_SEQ = 1;

뭐가 잘못됐는지 확인이 되시나요??

생각만해도 지옥문에 들어가기 전이네요...

쿼리는 진짜 아무리 숙련된 사람이라도 실수할 수 있기 때문에 조심해야 한다고 생각합니다.

 

이럴 때 MS-SQL에서는 BEGIN TRAN이라는 명령어를 제공합니다.

BEGIN TRAN
UPDATE MEMBER
SET DELETED = 1
WHERE MEMBER_SEQ = 1;

이렇게 사용하고

SELECT * FROM MEMBER
WHERE MEMBER_SEQ = 1;

 

위와 같이 검증 쿼리로 확인하여,

정상이라면 COMMIT TRAN; 으로  내용을 반영해주면 됩니다.

 

반대로 잘못 반영되었을 땐

ROLLBACK TRAN;으로 트렉젝션을 롤백하면 됩니다.

 

BEGIN TRAN을 사용하고는 꼭! COMMIT TRAN 이나 ROLLBACK TRAN을 사용해줘야 합니다.

만약 잊고, 사용하지 않았다면.. TRANSACTION이 계속 잡혀 있는 상태여서 DB가 정상 동작하지 않습니다. 

검증하는 시간도 그만큼 길면 안되겠지요.

반응형
반응형

 

 

[MSSQL] 랜덤 (무작위) Select


Select Top 10 * From 테이블명 Order by NEWID()


-- RAND() 난수 발생
select RAND() as rnd;
select convert(int, RAND()*100) as r1 -- 3자리 정수 추출 (0~999)
     , RIGHT(RAND(), 5)         as r2 --  임의의 5자리 숫자 추출

--정수형 난수
--최대값와 최소값을 포함할 때  
declare @max -- 최대값
declare @min -- 최소값
 
SELECT CONVERT(INT, ((@max + 1) - @min) * RAND()  + @min)

 

 

https://github.com/ngio/DB_query_mssql/blob/main/%EB%9E%9C%EB%8D%A4_select_NEWID_RAND.sql

반응형

'프로그래밍 > DataBase' 카테고리의 다른 글

[MSSQL] Multi UPDATE, 다중 UPDATE  (0) 2023.07.19
[MS-SQL] Begin Tran  (0) 2023.07.19
[MSSQL] IF…ELSE IF…ELSE  (0) 2023.07.14
[MSSQL] 월의 마지막 날짜 구하기  (0) 2023.07.03
[MSSQL] 날짜차이, 이전 행 정보 LAG LEAD  (0) 2023.07.03
반응형

데이터 분석가 나도 시작할 수 있을까? (역량, 공부)

 

데이터 분석가가 하는 일은 정확히 무엇일까? 크게 3가지로 요약하면 다음과 같다.

1. 현황을 파악하는 일

2. 현황의 원인을 밝혀내는 일

3. 개선을 위한 시스템을 구축하는 일

예를 들어 이번에 고객 유입 개선을 위한 이벤트를 연다고 해보자. 이 고객 유입과 개선 정도를 파악하기 위해선 평가 지표를 기획하고 대시보드를 만들어야 한다. 이 과정에서 데이터 분석가는 참여 고객을 어떻게 정의할 것인지, 이벤트 화면을 최소 1번 본 사람? 게시물을 공유한 사람? 등을 결정한다.

데이터를 분석하여 논리적으로 설명 가능하도록 결론을 도출하는 것이다. 예를 들어 갑자기 CX문의가 늘었는데 이 원인이 무엇인지 파악하기 위해 다음과 같은 Action을 취한다고 한다.

한 달간 갑자기 CX 문의가 너무 늘어서, 콜센터가 마비가 될 지경입니다.

보험사기를 치는 것 같은 고객을 어떻게 자동으로 적발할 수 있을까?

인스타그램 데이터를 자연어 처리해서 최근 시장 동향을 자동으로 파악할 수는 없을까?

개선을 위한 시스템을 구축하는 일은 위와 같이 더 나아질 수 있는 점을 찾아 해결하는 것이다.

다 종합해보면!! 데이터 분석가는 구체적으로 이런 일을 한다.

  • 문제 확인 & 가설 제작
  • 쿼리 제작 (SQL)
  • 모델링 (머신러닝, 통계 모델링, 비즈니스 모델링 등)
  • 인사이트 정리/시각화 (ppt, notion colab 등)
  • 협업/미팅

3. 데이터 분석가에게 필요한 역량은?

1) 논리적 사고

논리적인 사고는 문제가 주어지면 목표를 설정하고 해결방안과 그 이유를 생각해낼 수 있으며, 그에 따른 결론 또는 성과를 설명할 수 있는 것이다. 논리적 사고가 중요한 이유는 항상 “왜”가 중요하기 때문이다. 데이터 분석가가 도출한 결론에는 꼭 근거가 있어야 한다.

면접을 볼 때도 논리적인 사고는 큰 도움이 된다.

ex) 왜 ~~ 이러한 모델/스코어/기법 등등을 썼나요?

ex) 왜 우리 회사에 지원했나요

2) 꼼꼼함

데이터 분석가에게는 쿼리를 더 효율적으로 짜는 꼼꼼함과 복잡한 현실세계의 데이터를 잘 정리하는 능력이 필요하다.

3) 액션 위주의 사고

액션 위주의 사고라는 게 처음엔 잘 이해가 안 됐는데 이해하고 나니까 내가 평소에 하던 것은 액션 위주의 사고가 아니라는 것을 알았다. 예를 들어 ‘이번 주 가동률은 70%다’라고 인식하는 게 아니라 ‘전해 동기 대비 이번 주 가동률은 3% 낮은 70%’라고 보는 것이 액션을 낼 수 있는 분석이라는 거다.

4) 모델링

해당 모델의 문제가 무엇인지 파악하고, 이를 어떻게 하면 개선할 수 있을지 리소스/상황에 따라 필요에 맞게 생각하는 능력 이번 선배팅에서 계속 강조하셨던 부분은 크게 2가지이다.

1. 논리적, 구조적 사고하기

2. 자신의 주력 도메인을 갈고닦기!

프로그래밍 언어도 여러 개를 하는 것보다 어느 하나를 깊게 파는 것이 좋다고 하는 것처럼 데이터 분석가가 되고 싶다면 자신이 자신 있는, 잘하는 분야를 더 파는 게 중요하다고 한다.

데이터 분석가에도 다양한 유형이 있기 때문에 위의 데이터 분석가의 역량 중 하나만이라도 자신의 강점인 부분을 잘 살려서 준비하면 된다.

 

https://modulabs.co.kr/blog/data-analyst/

 

요즘 잘나가는 데이터 분석가 나도 시작할 수 있을까? (역량, 공부)

4차 산업혁명 시대 큰 주목을 받고 있는 미래 유망 직업 빅데이터 분석가 빅데이터 분석가가 되기 위해 필수적인 요소들을 필수 솔루션을 통해 알아보자.

modulabs.co.kr

 

반응형

+ Recent posts