MYSQL(9)
-
[집계] 그룹별 소계, 총계, 비율 구하기
ORACLE에서는 RATIO_TO_REPORT함수를 이용이 가능하지만, MS-SQL에서는 불가능하다. 따라서 직접 집계를 내보도록 하겠다. SELECT CNT_GROUPAS '그룹' , SUM(CNT)AS'소계' , SUM(CNT) * 100 / SUM(SUM(CNT))OVER()AS '차지 비율' , SUM(SUM(CNT)) OVER()AS '총계' FROM( SELECT 10 AS CNT, 'GROUP1' AS CNT_GROUP UNION ALL SELECT 10 AS CNT, 'GROUP1' AS CNT_GROUP UNION ALL SELECT 60 AS CNT, 'GROUP2' AS CNT_GROUP UNION ALL SELECT 40 AS CNT, 'GROUP2' AS CNT_GROUP UNIO..
2022.05.24 -
[소수 처리] 반올림, 올림
일반 SELECT 문에서 계산식을 쓰게 된다면 소수점은 내림계산된다. SELECT 3/4 > 0 CEILING 함수는 숫자를 올림 계산한다. SELECT CEILING(CONVERT(FLOAT,3)/4) > 1 FLOAT은 실수형을 가질 수 있는 데이터 타입이다. SELECT ROUND(CONVERT(FLOAT,3)/4, 2) > 0.75
2022.05.23 -
[형 변환] CAST, CONVERT
두 함수의 사용법 차이 SELECT CAST(GETDATE() AS DATE) > 2022-05-18 SELECT CONVERT(DATE, GETDATE()) > 2022-05-18
2022.05.18 -
[문자열 위치 찾기] PATINDEX, CHARINDEX
두 함수 모두 같은 맥락으로 문자열을 대소문자 구분없이 위치를 반환하지만 PATINDEX는 와일드문자사용이 가능하다. SELECT PATINDEX('찾을 문자열','문자열') SELECT CHARINDEX('찾을 문자열','문자열')
2022.05.18 -
[순위] ROW_NUMBER, RANK, DENSE_RANK
우선적으로 ROW_NUMBER은 동일한 값에도 고유 순위를 부여하게 된다. RANK와 DENSE_RANK는 동일한 값이면 같은 순위를 부여하지만, DENSE_RANK는 동일한 순위가 여러개일 경우에도 순위가 이어지지만, RANK는 동일한 순위가 여러개이면 순위를 건너뛰고 순위를 계산한다. SELECT *, ROW_NUMBER()OVER(PARTITION BY COMPANY ORDER BY SALARY) AS 'RANK1' , DENSE_RANK()OVER(PARTITION BY COMPANY ORDER BY SALARY) AS 'RANK2' , RANK()OVER(PARTITION BY COMPANY ORDER BY SALARY) AS 'RANK3' FROM #TMP ORDER BY 1 NO NAME C..
2022.05.18 -
[날짜] DATEPART, DATEDIFF
DATEPART 함수는 지정한 날짜를 정수로 반환한다. SELECT DATEPART([추출 부분?],[날짜]) 추출하고자 하는 양식은 YEAR, QUARTERM MONTH, DAYOFYEAR, DAY, WEEKDAY, WEEK, HOUR, MINUTE, SECOND 가 있다. DAYOFYEAR은 1년중 몇 일 째날인지 계산해준다. (ex. 2월 1일 -> 32) WEEKDAY는 일요일부터 1로 시작한다. DATEPART(WEEKDAY, '2022-01-02') = 1 DATEPART(WEEKDAY, '2022-01-03') = 2 DATEPART(WEEKDAY, '2022-01-04') = 3 DATENAME(WEEKDAT, '2022-01-02') = 일요일 DATENAME(WEEKDAT, '2022-..
2022.05.18