본문 바로가기

IT

SQL | 누적합 구하기 - WHILE문, 셀프조인 WHILE 문과 셀프조인을 활용하여 누적합 구하기 위와 같은 간단한 누적합을 구하는 프로시저를 두 가지 방법을 통해 생성한다. 나는 MSSQL을 사용하였으나 로직은 같으므로 어떤 언어든 상관없다. 1. WHILE 문 활용 -- 프로시저 생성 CREATE PROC TestA AS -- 변수 선언 DECLARE @Num INT = 1, @Sum INT = 0 -- 값을 넣을 임시 테이블 생성 CREATE TABLE #TempA ( numINT, nSumINT ) WHILE(@Num A.num >= B.num 3. B 테이블의 num을 A 테이블의 num 값을 기준으로 그룹으로 묶으면 A 테이블의 num 과 같거나 작은 num 들이 해당된다. 그러므로 A 테이블의 num 값을 기준으로 B 테이블의 num 값들..
MSSQL | 자주 쓰는 문자 함수 정리 . RTRIM / LTRIM / SUBSTRING / RIGHT / LEFT / LEN / DATALENGTH / CHARINDEX / REPLACE / REPLICATE / REVERSE / SPACE / LOWER / UPPER / ASCII RTRIM : 오른쪽 공백 없애기 LTRIM : 왼쪽 공백 없애기 ex. RTRIM('12121212 ') --> 결과 : 12121212 LTRIM(' 111333222') --> 결과 : 111333222 ※ Oracle 함수로 사용할 때는 두번째 인수로 없애고 싶은 문자를 지정할 수 있음. ex. RTRIM('abcdefg', 'c') --> 결과 : abdefg SUBSTRING('문자열', m [, n ]) : 문자열 중 m 위치에서 n개의 문자 길이에..
MSSQL | 자주 쓰는 숫자 함수 정리 . ROUND / CEILING / FLOOR / ABS / POWER / SIGN ROUND(n [, m]) : n을 소수점 m 자리에서 반올림하여 리턴 (m 자리까지 나타남. m이 생략되면 0이 default 값) ex. ROUND(38.5235, 3) --> 결과 : 38.523 ROUND(38.5235, 1) --> 결과 : 38.5 ROUND(38.5235, 0) --> 결과 : 39 ROUND(38.5235) --> 결과 : 39 *인수 0이 default CEILING(n) : n보다 크거나 같은 최소 정수 리턴 FLOOR(n) : n보다 작거나 같은 최대 정수 리턴 정수인 천장과 바닥 사이에 숫자가 있다고 생각하면 쉽다. ex. . CEILING(38.123) --> 결과 : 39 FLOO..
MSSQL | 두번째로 큰 연봉 - OFFSET ~ FETCH leetcode의 problem의 database의 #176 Second Highest Salary 문제 https://leetcode.com/problemset/database/ LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제의 정답은 MySQL로만 나와있다. MySQL의 LIMIT OFFSET 을 MSSQL의 OFFSET FETCH를 통해 해결해본..
SQL | 온라인으로 SQL 쿼리문 실행 가능한 페이지들 개발환경 없을 때 간단하게 쓰기 좋은 페이지들 1. W3Schools - SQL Tryit Editor v1.6 https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all SQL Tryit Editor v1.6 WebSQL stores a Database locally, on the user's computer. Each user gets their own Database object. WebSQL is supported in Chrome, Safari, and Opera. If you use another browser you will still be able to use our Try SQL Editor, but a different ve..
ORACLE & MSSQL | 그룹 별 소계 조회 - ROLLUP, UNION ALL 그룹 별 소계를 계산할 때 ROLLUP 과 UNION ALL을 사용한다. 나는 오라클SQL 로 SQL을 배워서 ROLLUP을 사용할 때는 // ORACLE SQL GROUP BY ROLLUP(컬럼명) 이렇게 쓰는 줄만 알았다. 생각없이 MSSQL로도 저렇게 썼더니 안되길래 MSSQL은 ROLLUP을 못 쓰나 했지만 당연히 MSSQL도 ROLLUP을 쓸 수 있다. 폼이 다를 뿐. // MSSQL GROUP BY 컬럼명 WITH ROLLUP 이렇게하면 원하는 컬럼별로 소계를 나타낼 수 있다. 실행해보면 소계가 잘 나오는데 행의 항목이 NULL로 나올 것이다. 예쁘게 '소계', '총계'를 써주고 싶은 마음이 든다. 그러려면 특정 행이 집계 레코드인지 판단을 해야한다. 해당 레코드가 집계 레코드인지 아닌지 구분..
아파치 톰캣 | 서버 포트번호 충돌 해결 + xml 파일 text 에디터로 변경 데이터베이스와 함께 아파치 톰캣을 사용하게 되면 아래와 같은 에러가 발생한다. 둘 다 포트번호 8080을 사용하기 때문에 충돌이 발생하기 때문이다. 이를 해결하기 위해서는 아파치 톰캣 서버의 포트 번호를 수정해야 한다. 서버 탭의 톰캣 서버를 더블 클릭한다. 그러면 이러한 창이 뜨는데 현재 HTTP/1.1의 포트 번호가 8080인 것을 더블 클릭하여 바꿔준다. 나는 8090으로 바꿨다. 이렇게 바꿔주면 이상 없이 구동이 잘 된다. + XML Editor 말고 Text Editor 버전으로 바꾸고 싶은 경우 프로젝트 익스플로러에서 서버 노드를 확장하고 server.xml 를 연다. 그리고 대충 쭉 내리다 보면 이부분에서 port="8080" 의 숫자를 바꿔준다. 나는 위의 방식을 통해 8090으로 바꿔주었..
JAVA | Scanner - 사용자에게 값 입력 받기 STEP 01. Scanner를 사용하여 사용자에게 값을 입력 받는다. import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 인스턴스 생성 String name; System.out.print("이름을 입력하세요 : "); name = sc.next(); System.out.println("당신의 이름은 " + name + " 입니다."); } } Scanner는 util 패키지 안에 들어있다.import 구문을 통해 util 패키지 안에 들어있는 Scanner를 받아온다. Scanner는 next()메소드를 사용한다. ..