728x90
반응형

전체 글 773

[MSSQL] 시작일자 종료일자 사이 모든 일자를 조회하는 방법

쿼리문을 작성하다 보면 테이블에 데이터는 없지만 시작일자와 종료일자 사이의 일자(날짜)를 포함하여 조회해야 할 때가 있다. 날짜만 들어있는 테이블을 생성해서 조인하여 사용해도 되지만, 해당 기간의 데이터를 동적 뷰로 생성하여 일시적으로 사용할 수도 있다. 날짜 뷰를 생성하기 위해서는 재귀 쿼리(WITH CTE) 또는 master..spt_values 시스템 테이블을 사용하면 된다. MSSQL 기간내 모든 일자(날짜) 조회 재귀 쿼리(WITH CTE)로 날짜 뷰 만들기 WITH DateRange(Dates) AS ( SELECT CONVERT(DATE, '2021-12-01') --시작일자 UNION ALL SELECT DATEADD(d, 1, Dates) FROM DateRange WHERE Dates ..

IT/SQLD 2023.05.22

[MSSQL] DATEDIFF, DATEADD 날짜 비교, 날짜 계산

DATEDIFF 두 날짜의 차이를 계산하는 함수이다. 즉, 시작 날짜에서 종료 날짜까지의 일 수 차이를 반환한다. SELECT DATEDIFF(날짜형식, 시작날짜, 종료날짜) 1) 두 날짜의 차이 일 수 SELECT DATEDIFF(DAY, '2017-02-13', '2017-03-15') AS '차이 일 수' 결과 데이터 2) 두 날짜 비교 DECLARE @Date DATETIME = '2017-02-15' IF DATEDIFF(d, @Date, '2017-02-13') > 0 SELECT '2017-02-13 미만 (미포함)' ELSE IF DATEDIFF(d, @Date, '2017-02-13')

IT/SQLD 2023.05.22

[mysql] 월별통계방법!! (데이터 없는 날짜 0 처리 방법)

안녕하세요. 오늘은 통계를 위한 월별통계 쿼리를 알아보겠습니다. 예를들어 올해인 2021년의 월별통계를 구하기 위해서는 group by를 해야하는데 데이터가 없는 경우 group by에서 빠지게 됩니다. 이것을 처리하려하는데.....저는 어찌어찌 처리했지만 먼가 억지스러운 느낌이 납니다...ㅜㅜ 더 좋은 방법 있으면 댓글로 공유해주세요!! 저의 구현방법입니다. 1. 10년치날짜더미데이터 테이블 생성 2. 구하고자하는 테이블과 left join 1. 10년치날짜더미데이터 테이블 생성 더미 데이터 생성 날짜 테이블을 생성하기 위한 더미 테이블을 생성하고 값을 1을 넣어줍니다. create table t (n int); insert into t values (1); 그리고 더미 데이터를 생성해줍니다... 10..

IT/SQLD 2023.05.22

데이터 검색(WHERE) 여러 조건데이터

데이터를 조회하는 방법에 대해 이전 문서에 이어서 설명하도록 하겠습니다. 이번에 설명드릴 내용은 단순한 하나의 조건을 검색하는 것이 아니라 복합적인 조건을 이용해서 검색해야 할 경우에 어떻게 검색을 하는 지에 대한 내용입니다. NOT을 사용하여 행 제외하기 NOT 연산자는 단일 조건에서도 사용되지만 보통 여러 조건을 이용한 검색을 할 때 많이 사용됩니다. 말 그대로 조건에 맞지 않는 조건을 검색하는 용도로 사용됩니다. 보통 Between, In, Like 및 Is Null 등의 술어와 같이 사용되는 데 의미는 단순하지만 사용상에는 약간의 주의가 필요한 연산자입니다. 1. 주문 테이블에서 주문 날짜가 2017년 10월이 아닌 주문 리스트를 선택하시오. 2. 고객 테이블에서 고객이 사는 곳이 서울과 부산이 ..

IT/SQLD 2023.05.22

[MySQL] A테이블에 있고, B테이블에 없는 데이터 조회 및 삭제

A테이블에 있고, B테이블에 없는 데이터 조회 SELECT A.column FROM table1 A LEFT OUTER JOIN table2 B ON A.column=B.column WHERE B.column IS NULL; 삭제하기 위해서는 임시테이블 사용 DELETE FROM table1 WHERE column IN (SELECT * FROM (SELECT A.column FROM table1 A LEFT OUTER JOIN table2 B ON A.column=B.column WHERE B.column IS NULL) AS temp_table); 출처 : G4 World☆ :: [MySQL] A테이블에 있고, B테이블에 없는 데이터 조회 및 삭제 (tistory.com)

IT/SQLD 2023.05.22

[MSSQL] 조인 방법 쉽게 정리 (INNER JOIN, OUTER JOIN)

SQL Server에서는 조인을 할 때에는 안시 조인(ANSI JOIN) 사용을 권장한다. 아래에는 조인(INNER JOIN), 아우터 조인(LEFT OUTER JOIN, RIGHT OUTER JOIN), 크로스 조인(CORSS JOIN) 사용법을 정리하였다. INNER JOIN과 LEFT OUTER JOIN은 꼭 사용법을 숙지해야 하며, 나머지 부분은 개념만 이해하고 넘어가면 된다. 조인 (INNER JOIN) : 기준 테이블과 조인 테이블 모두 데이터가 존재해야 조회됨 아우터 조인 (OUTER JOIN) : 기준 테이블에만 데이터가 존재하면 조회됨 조인 (INNER JOIN) SELECT a.empno , a.ename , a.job , a.mgr , a.deptno , b.dname FROM emp..

IT/SQLD 2023.05.22

[MSSQL] GROUP BY COUNT 그룹으로 묶어 집계하기

GROUP BY COUNT 그룹으로 묶은 후 집계해보자 초기 데이터 위와 같은 데이터가 있을 때 우리는 name을 기준으로 count를 구할 것이다. 1. name 칼럼을 기준으로 그룹별로 count 2. name 컬럼을 기준으로 총 count 3. name 컬럼 값 + name 칼럼을 기준 총 count 함께 출력 (count를 컬럼으로) 1. name 칼럼을 기준으로 그룹별로 count SELECT name, COUNT(name) AS cnt FROM table_ggmouse GROUP BY name 결과 데이터 2. name 컬럼을 기준으로 총 count SELECT COUNT(name) AS cnt FROM ( SELECT name FROM table_ggmouse GROUP BY name ) A..

IT/SQLD 2023.05.22

[DATABASE/SQL] WHERE절에 NOT 사용하기 , 특정 값을 제외한 조회

예제 테이블) with school as ( select '1' as 학년, '쉬시' as 이름, 70 as 점수 from dual union all select '3','용띠' ,54 union all select '3','이웃집청소' ,72 union all select '1','붜워' ,10 union all select '2','윤띵' ,50 union all select '3','츄밍뜨' ,60 union all select '2','BackSengWon' , 15 union all select '2','동탄' ,90 union all select '3','듀탄퐁', 0 ) select * from school; 문제) NOT을 이용하여 학년이 1학년이 아닌 학생들의 레코드를 조회 하세요 wit..

IT/SQLD 2023.05.22

[MSSQL] 저장 프로시저(Stored Procedure) 내용 검색하기

저장 프로시저 내용 검색하기 가끔 저장 프로시저 이름이 안떠오르거나 다수의 SP의 내용을 일괄적으로 바꾸거나 할 필요가 있을 경우가 있습니다. 저장 프로시저를 일일이 열어봐서 찾으려고 하니 숨이 턱막힙니다. 그럴 때 유용한 저장프로시저 내용 검색쿼리를 소개합니다. 잘못된 방식 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%찾을 내용%' AND ROUTINE_TYPE='PROCEDURE' …포스트 작성하기 전까지는 위 쿼리를 사용했었습니다만 찾다보니 문제를 발견하였습니다. ROUTINE_DEFINITION이 nvarchar(4000)으로 문자열을 변환하여 내려주기 때문에 매우 긴 내용의 경우 검색에 문제가 있다고 합니다...

IT/SQLD 2023.05.22
728x90
반응형