본문 바로가기

SQL28

[SQL] 탑 앤 쿼리 (TOP N QUERY) TOP N QUERY-페이징 처리를 효과적으로 수행하기 위해 사용-전체 결과에서 특정 N개 추출예) 성적 상위자 3명  TOP-N 행 추출 방법1.ROWNUM2.RANK3.FETCH4.TOP N(SQL Server)  1.ROWNUM-출력된 데이터 기준으로 행 번호 부여-절대적인 행 번호가 아닌 가상의 번호이므로 특정 행을 지정할 수 없음(=연산 불가)-첫번째 행이 증가한 이후 할당되므로 '>' 연산 사용 불가(0은 가능)EX) ROWNUM 출력 형태SELECT ROWNUM, EMP.* FROM EMP WHERE SAL >=1500;  ROWNUM 잘못된 사용#ROWNUM 잘못된 사용1#크다 조건 전달 불가SELECT * FROM EMPWHERE ROWNUM > 1#ROWNUM 잘못된 사용2#항상 불변.. 2024. 8. 18.
[SQL] 윈도우 함수(LAG, LEAD, SUM, AVG, MIN, MAX, COUNT, RANK 등..) -서로 다른 행의 비교나 연산을 위해 만든 함수-GROUP BY를 쓰지 않고 그룹 연산 가능-LAG, LEAD, SUM, AVG, MIN, MAX, COUNT, RANK SELECT 윈도우함수([대상]) OVER( [ PARTITION BY 컬럼 ] [ ORDER BY 컬럼 ASC|DESC ] [ROWS|RANGE BETWEEN A AND B]); PARTITION BY 절-  출력할 총 데이터 수 변화 없이 그룹연산 수행할 GROUP BY 컬럼ORDER BY 절 - RANK의 경우 필수(정렬 컬럼 밑 정렬 순서에 따라 순위 변화)- SUM, AVG, MIN, MAX, COUNT 등은 누적값 출력 시 사용 ROWS | RANGE BETWEEN A AND B-연산 범위 설정-ORDER BY절 필수 *PAR.. 2024. 8. 13.
[SQL] 그룹함수 (ROLLUP(), CUBE(), GROUPING SETS()) 그룹함수의 종류그룹함수의 종류에는 ROLLUP(속성명), CUBE(속성명), GROUPING SETS(속성명) 으로 표현한다. 1. ROLLUP : 소그룹 간의 소계를 계산2. CUBE : GROUP BY 항목들간 단원적인 소계를 계산할 수 있다(모든 그룹케이스를 계산)3. GROUPING SETS: 특정 항목에 대한 소계를 계산할 수 있다. (GROUPING SETS는 특정 항목을 그룹한 다수의 SQL들을  UNION 한것과 같다. 또한 나머지 그룹함수들에 대해서도 UNION으로 같은 결과를 낼 수 있다.)   GROUPING SETS()1. GROUPING SETS는 ROLLUP과 CUBE와는 다르게 그룹핑된 결과만 보여준다.2. GROUPING SETS는 괄호로 묶은 집합별로 집계 역시 구할 수 있.. 2024. 8. 13.
[SQL]테이블, 데이터 복사 쿼리 테이블 구조 및 데이터 복사하기CREATE TABLE 신규테이블명 AS SELECT * FROM 복사할테이블명 [WHERE 1=1] 테이블 구조만 복사하기CREATE TABLE 신규테이블명 AS SELECT * FROM 복사할테이블명 WHERE 1=2--MSSQLSELECT * INTO 신규 테이블 명 FROM 복사할 테이블 명 WHERE 1=2; 테이블이 존재할경우, 데이터만 복사하기(구조가 같은경우)INSERT INTO 복사대상테이블명 SELECT * FROM 원본테이블명 [WHERE 1=1] 테이블이 존재할경우, 데이터만 복사하기(구조가 다를경우)INSERT INTO 복사대상테이블명 (COL1, COL2) SELECT COL1, COL2 FROM 원본테이블명 [WHERE 1=1] 2024. 6. 7.
더미데이터 만들기 1. EXCEL CONCATENATE()함수로 만들기 (내가 가장 많이 사용함...)1. insert 쿼리문 만들기INSERT INTO TABLE_NAME (talbe_id, table_name, table_phon, table_birth, .... )VALUES ('', '', '', '', ....)  2. 엑셀 함수 CONCATENATE("문자열","문자열")'' 안에 "& 셀번호 &" 넣어주면됨문장이 길 때는 중간중간에 ","로 끊어주면됨=CONCATENATE("")=CONCATENATE("INSERT INTO TABLE_NAME(id, name, phon, birth) VALUES('','','','');")=CONCATENATE("INSERT INTO TABLE_NAME(id, name, ph.. 2024. 4. 2.
DB, USER 생성 및 권한설정 DB, USER 생성 및 권한설정 (MariaDB) use mysql create database [DB명]; show databases; create user [사용자명]@localhost identified by 'uscdb12'; grant all privileges on [DB명].* to [사용자명]@localhost; grant all on [DB명].* to '[사용자명]'@'localhost' identified by 'uscdb12'; grant all on [DB명].* to '[사용자명]'@'%' identified by 'uscdb12'; flush privileges; 2023. 11. 10.