반응형
반응형

탭   : char(9)

 

select * from 테이블명

where 컬럼명 = char(9)

 

엔터값 : char(10) + char(13)

 

select * from 테이블명

where 컬럼명 = char(10) + char(13)

 

 

Tab char(9)
Line feed char(10)
Carriage return char(13)

 

select 'a'+char(9)+'b'

select 'a'+char(13)+'b'

select 'a'+char(10)+'b'

 

엑셀출력 등을 하거나 화면에서 공백을 제거해야할 경우 공백이랑 엔터 같이 제껴야 한다.

탭까지 제낄 필요있으면 char(9) 추가

 

REPLACE( REPLACE(column,char(13),'' ), char(10), '')

반응형
반응형

정렬 조건 없이 순번을 매겨보자

 

 

일반적으로 순번을 지정할 때 ROW_NUMBER(), RANK, DENSE_RANK 등을 이용한다.

 

[MSSQL] ROW_NUMBER, RANK, DENSE_RANK 순위함수
 

 

SELECT ROW_NUMBER() OVER(ORDER BY 컬럼명) FROM 테이블명
SELECT RANK() OVER(ORDER BY 컬럼명) FROM 테이블명
SELECT DENSE_RANK() OVER(ORDER BY 컬럼명) FROM 테이블명

 

 

 

이렇게 정렬할 기준 컬럼을 지정 후 순위를 매긴다.

 

하지만 SELECT 해서 나오는 결과 그대로 순위를 매기려고 한다.

 

SELECT ROW_NUMBER() OVER(ORDER BY 1)
FROM 테이블명

 

다음과 같이 ORDER BY 1로 하면 될 거 같은데...! 안된다..

 

그렇다면 어떻게 처리해야할까?

 

 

 

첫번째 방법. 의미없는 변수 사용

 

DECLARE @row INT = 1 -- 의미 없는 변수
 
SELECT ROW_NUMBER() OVER(ORDER BY @row)
FROM 테이블명

 

이렇게 의미없는 변수를 선언해주고 해당 변수를 ORDER BY 절에 넣어준다.

 

 

 

 

두번째 방법. SELECT 1 사용

 

SELECT ROW_NUMBER () OVER(ORDER BY (SELECT 1))
FROM 테이블명

 

 

 

반응형
반응형

NTILE(Transact-SQL)

정렬된 파티션의 행을 지정된 수의 그룹으로 분산시킵니다. 그룹에는 1부터 시작하는 번호가 매겨집니다. NTILE은 각 행에서 해당 행이 속한 그룹 번호를 반환합니다.

https://learn.microsoft.com/ko-kr/sql/t-sql/functions/ntile-transact-sql?view=sql-server-ver16 

 

NTILE(Transact-SQL) - SQL Server

NTILE(Transact-SQL)

learn.microsoft.com

USE AdventureWorks2012;   
GO  
SELECT p.FirstName, p.LastName  
    ,NTILE(4) OVER(ORDER BY SalesYTD DESC) AS Quartile  
    ,CONVERT(NVARCHAR(20),s.SalesYTD,1) AS SalesYTD  
    , a.PostalCode  
FROM Sales.SalesPerson AS s   
INNER JOIN Person.Person AS p   
    ON s.BusinessEntityID = p.BusinessEntityID  
INNER JOIN Person.Address AS a   
    ON a.AddressID = p.BusinessEntityID  
WHERE TerritoryID IS NOT NULL   
    AND SalesYTD <> 0;  
GO

 

FirstName      LastName              Quartile  SalesYTD       PostalCode  
-------------  --------------------- --------- -------------- ----------  
Linda          Mitchell              1         4,251,368.55   98027  
Jae            Pak                   1         4,116,871.23   98055  
Michael        Blythe                1         3,763,178.18   98027  
Jillian        Carson                1         3,189,418.37   98027  
Ranjit         Varkey Chudukatil     2         3,121,616.32   98055  
José           Saraiva               2         2,604,540.72   98055  
Shu            Ito                   2         2,458,535.62   98055  
Tsvi           Reiter                2         2,315,185.61   98027  
Rachel         Valdez                3         1,827,066.71   98055  
Tete           Mensa-Annan           3         1,576,562.20   98055  
David          Campbell              3         1,573,012.94   98055  
Garrett        Vargas                4         1,453,719.47   98027  
Lynn           Tsoflias              4         1,421,810.92   98055  
Pamela         Ansman-Wolfe          4         1,352,577.13   98027  

(14 row(s) affected)

 

반응형
반응형

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

 

데이터 분석가가 하는 일은 정확히 무엇일까? 크게 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

 

반응형
반응형

[MSSQL] STRING_AGG(Transact-SQL) 문자열 식의 값을 연결하고 그 사이에 구분 기호 값을 추가합니다. 구분 기호는 문자열 끝에 추가되지 않습니다.

 

https://learn.microsoft.com/ko-kr/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver16 

 

STRING_AGG(Transact-SQL) - SQL Server

STRING_AGG(Transact-SQL)

learn.microsoft.com

 

반응형
반응형

[MSSQL]  STRING_SPLIT(Transact-SQL)

https://learn.microsoft.com/ko-kr/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver16 

 

STRING_SPLIT(Transact-SQL) - SQL Server

STRING_SPLIT 함수의 Transact-SQL 참조입니다. 이 테이블 반환 함수는 문자 구분 기호를 기준으로 문자열을 부분 문자열로 분할합니다.

learn.microsoft.com

지정된 구분 기호 문자에 따라 문자열을 부분 문자열의 행으로 분할하는 테이블 반환 함수입니다.

SELECT ProductId, Name, Tags  
FROM Product  
JOIN STRING_SPLIT('1,2,3',',')
    ON value = ProductId;

 

 

반응형

+ Recent posts