- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 말줌임 CSS
- kill -9
- c언어
- springboot 재가동
- ffmpeg
- view 획득
- reactnative
- Activity 전체화면
- rn
- 터치좌표 view
- group by
- 파티션 빠른 삭제
- vc++
- 시간대별 통계
- MFC
- CSS
- 스크롤적용
- mybatis exception
- CentOS
- pid 찾아 kill
- 피쉬랜드
- MariaDB
- 가변영역 스크롤
- SQL
- Back 키 클릭 감지
- MySQL
- 코드로 서버 재실행
- springboot
- sql exception
- 시간대 테이블생성
목록SQL Query (8)
개발은 하는건가..
SQL 에서 DUAL 명은 실제 존재하는 테이블이 아닌 특정함수 수행이나 연산을 위해 형식적으로 존재하는 dummy 테이블이다.그러므로 데이터를 저장 관리 할수 없고 쿼리의 형식을 맞추기 위해 존재한다고 보면 됨.예를 들어 특정 범위의 값을 가지는 기준 테이블이 필요할 경우 아래와 같이 값을 생성가능하다.SELECT @N := @N +1 AS HOURSFROM collectData, (select @N:=0 from DUAL ) NNLIMIT 24;이렇게 생성된 가상 테이블과 join 하여 원하는 결과를 만드는데 사용한다.
매초 매분 단위로 저장되는 DB 에서 차트 생성을 위한 데이터 추출 시 다음과 같은 형태로 쿼리하여 데이터를 추출한다SELECT DATE(collectTime) AS DT, HOUR(collectTime) AS HH, MAX(DATA1) , MAX(DATA2), MAX(DATA3), MAX(DATA4)FROM collectData WHERE (collectTime BETWEEN '2025-01-06' AND '2025-01-07')GROUP BY DT, HH;각 시간대 별로 차트 표시를 위해 해당 시간대의 최대값들을 추출한다.
collectData 에는 200만건의 데이터 abnormalLog 에는 70건의 데이터가 존재 abnormalLog 의 meterStatus = -1 인 데이터는 30건이며 이 데이터에 해당하는 dataFKey 필드는 collectData .pKey 에 해당하며 collectData 에 이 데이터들을 업데이트할려고 할때 아래와 같이 했더니 40초 가까이 소요됨. SELECT * FROM collectData WHERE pKey IN (SELECT dataFKey FROM abnormalLog WHERE meterStatus = -1); --> 16ms 소요 UPDATE collectData SET meterValue = -1; WHERE pKey IN (SELECT dataFKey FROM abnorm..
testuser 계정을 생성 > 비밀번호를 설정 > 대상DB 에 대해 SELECT 권한 부여 > 정책 반영CREATE USER testuser;SET PASSWORD FOR testuser = PASSWORD('비밀번호설정');GRANT SELECT ON 대상DB.* TO testuser;FLUSH PRIVILEGES; GRANT 시 대상DB.테이블 을 지정할 경우 해당 테이블에 대한 권한이 설정됨.
다음과 같이 LAST_DAY 를 함수로 2달 전 마지막날을 구한 뒤 +1일 하며 첫날을 구하고 1달 전의 마지막 날을 구해 이전달의 첫날부터 마지막 날까지의 조건을 생성할 수 있다. WHERE workDate >= (LAST_DAY(NOW() - INTERVAL 2 month) + INTERVAL 1 DAY) AND workDate
아래와 같이 조건 범위 파라메터를 문자열로 받았을 때 TO_DATE 함수로 날짜 포맷 문자열을 이용하여 쉽게 검색 조건을 구성할 수 있다. SELECT * FROM dataTable WHERE regDate BETWEEN STR_TO_DATE('20230101', '%Y%m%d') AND STR_TO_DATE('20230131', '%Y%m%d'); 날짜 포맷 문자 년 %Y 월 %m 일 %d 시 %H 분 %i 초 %s 밀리초 %f
GROUP_CONCAT 함수를 이용하면 특정 컬럼의 여러 row 값들을 하나의 컬럼으로 추출 할 수 있다. SELECT fwVer FROM Firmwares; SELECT GROUP_CONCAT(fwVer) FROM Firmwares; 기본적으로 콤마(,) 로 구분 처리가 되며 변경하고 싶을 경우 다음과 같이 한다. SELECT GROUP_CONCAT(fwVer SEPARATOR '/') FROM Firmwares;
위와 같이 레코드가 존재할 때 각 특정 deviceType 의 fwType 별로 최신 버전을 추출하기 위한 쿼리를 아래와 같이 작성할 수 있다. SELECT T2.deviceType, T2.fwType, T2.fwVer, T2.fwVerInt, T2.fwChecksum, T2.targetGroup FROM (SELECT deviceType, fwType, MAX(fwVerInt) AS fwVerInt FROM Firmwares GROUP BY deviceType, fwType HAVING deviceType = '대상deviceType') T1 INNER JOIN Firmwares T2 ON T1.deviceType=T2.deviceType AND T1.fwType=T2.fwType AND T1.fwVe..