728x90
반응형

DB 8

[MYSQL] 그룹화된 데이터의 합계 구하기 : WITH ROLLUP 활용 (feat. GROUP BY)

WITH ROLLUP 데이터베이스에서 그룹화된 데이터를 조회할 때, 마지막 행에 합계를 자동으로 구해주는 기능이 있습니다. 이 기능을 몰랐을 땐 반복문으로 데이터를 스택으로 쌓거나, 따로 쿼리로 추출했었지만, 이 기능을 사용하면 매우 쉽게 합계를 구할 수 있습니다. 정의WITH ROLLUP은 GROUP BY와 함께 사용되어 그룹화된 데이터의 합계를 계산합니다. 사용 사례데이터 분석에서 각 그룹의 합계를 구할 때.재무 보고서에서 월별, 연도별 합계를 계산할 때. 작동 원리마지막에 추가된 행에 각 그룹의 합계를 계산.NULL 값으로 그룹화 키를 표시.  예시 SELECT department, SUM(salary) AS total_salaryFROM employeesGROUP BY departmen..

DB/SQL 2024.12.20

[MYSQL] 위도와 경도로 가장 가까운 최단거리 구하기, 하버사인 공식(Haversine formula)

하버사인 공식 (Haversine Formula) 하버사인 공식은 두 지점 간의 구면상에서의 거리를 계산하기 위한 수학적 공식입니다. 이는 지구와 같은 구형 표면에서 두 점 사이의 최단 거리를 구할 때 매우 유용합니다. 특히 위도와 경도로 나타낸 GPS 좌표를 기반으로 거리를 계산하는 데 많이 사용됩니다.    본론 하버사인 공식을 SQL로 구현하여 두 지점 사이의 최단거리를 구할 수 있습니다. 이 공식은 지구의 구형 구조를 기반으로 하여 위도와 경도를 사용해 두 위치 간의 거리를 계산합니다. SQL에서 하버사인 공식을 사용하려면 각 지점의 위도와 경도를 라디안으로 변환하고, 삼각함수를 사용하여 거리를 계산합니다. 아래는 두 지점 간의 최단거리를 계산하는 하버사인 공식의 SQL 쿼리 예시입니다. 이 쿼리..

DB/SQL 2024.10.18

[MYSQL] Illegal mix of collations utf8mb4_general_ci 에러

새로운 프로젝트를 진행하게되면 이전 프로젝트를 가지고 와서 다시 시작하는 경우가 많습니다.이것저것 추가하고 제거하고 버전 업데이트하고 그러다보면 때때로 이러한 에러들이 발생합니다."Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation '='  등원인 두 개의 문자열을 비교하거나 조작할 때 발생하는 에러로, 두 문자열의 정렬 방식(collation)이 서로 다를 때 나타납니다. Collation은 문자열을 정렬하고 비교하는 방법을 정의하는 규칙 세트입니다.  이를 해결하기 위해 동일한 collation을 사용하도록 문자열을 변환할 수 있습니다. 다음은 몇 가지 해결 방법입니다..

DB/SQL 2024.07.12

[MYSQL] HeidiSQL로 트리거(Trigger) 부착하기

트리거는 테이블의 삽입, 수정, 삭제 등의 작업이 이루어졌을 경우 자동으로 실행되는 기능이다. 트리거에 많이 활용되는 사례는 쇼핑몰의 경우 어떤 상품을 실수로 삭제했다고 가정해보자. 삭제된 데이터는 복구하는 것이 어렵고, 누가 지웠는지 추적하는 것도 쉽지가 않다. 만약 이럴때 트리거를 이용해서 다른 테이블에 기록을 해놓는다면 문제점을 해결할 수 있다. 그러면 고의든 실수든 기록되었던 다른 테이블에서 확인하고 문제를 해결하는데 도움이 될 수 있다. 트리거의 종류는 AFTER, BEFORE 종류가 있다. AFTER트리거는 삽입, 삭제, 수정 작업이 이루어진 후에 작동하는 트리거이고, BEFORE트리거는 AFTER트리거와 반대로 작업이 이루어지기 전에 작동하는 트리거이다. AFTER 트리거 예제 먼저 트리거를..

DB/SQL 2023.06.08

SQL 페이지네이션(Pagination) 최적화

Pagination(페이지네이션)을 구현하면서 최적화가 필요하다고 느낀적이 있나요? Pagination을 구현하면서 DB데이터가 100만개 정도로 되는 페이지를 구현한 적이 있나요?? 데이터가 별로 없어서 필요없다고 느낄 수 있지만, 시간이 지나면서 데이터가 10만개 이상, 특히 상태에 따른 정렬이나 검색에 따르게 된다면 얘기가 다를수 있습니다. 다음은 제가 실제 데이터에서 극단적인 케이스의 쿼리와 결과값을 보여드립니다. 먼저 총 데이터의 갯수가 23만개의 데이터로 예를 드려고 합니다. 극단적이겠지만 먼저 LIMIT 0,10의 결과 값과 210000,10 의 쿼리 수행속도 차이를 보여드립니다. 실제로 구현한다고 가정하더라도 관리자에서 이러한 페이지네이션의 결과값을 보여줄 일은 사실상 없다고 무방할 수 있..

DB/SQL 2023.05.27

[DB] 엑셀(Excel) JSON 데이터를 테이블 형식 및 쿼리로 변환하기

지난 포스팅에서는 각 셀마다 하나의 데이터만 있었지만, 간혹 JSON 데이터로 주는 경우가 있습니다. JSON이란? JSON(JavaScript Object Notation)은 사람이 읽을 수 있는 텍스트를 사용하여 데이터를 저장하고 전송하는 데이터 공유를 위한 개방형 표준 파일 형식이라고 하는데 글보다는 영상이 좋을 수 있으니 아래 유튜브를 통해 알아가기로 합시다. 이제 본론으로 갑시다 저는 업비트 API를 참고해서 JSON 데이터를 예시로 가져와봤습니다. https://docs.upbit.com/ 업비트 개발자 센터 업비트 Open API 사용을 위한 개발 문서를 제공 합니다.업비트 Open API 사용하여 다양한 앱과 프로그램을 제작해보세요. docs.upbit.com 예시 데이터를 준비하셨다면 [..

DB/EXCEL 2023.05.22

[DB] 엑셀(Excel)로 대량 SQL 쿼리 만들기

"카제인나트륨씨 엑셀파일 하나 드릴테니, 데이터 DB에 업데이트해주세요~ " 백엔드 업무를 하면, 서버 이전이나 리뉴얼 개발 등을 할 때 DB 데이터를 일괄 넣어주거나 수정해줘야 할 일이 있다. 쿼리 하나를 작성하면 한번에 모든 행에 맞는 쿼리를 생성할 수 있는 방법에 대해 공유하고자 한다. 먼저 등록일 데이터 옆에 쿼리 하나를 작성해줍니다. 셀에 작성 형식은 "INSERT INTO 테이블 SET 열1='"&데이터1&"', 열2='"&데이터2&"' ; " 형식으로 작성해주면 됩니다. 아래처럼 먼저 쿼리를 작성해줍니다. 그리고 A~C사이에 셀을 하나 클릭하고 컨트롤을 누른채로 방향키 아래로 누르면 마지막으로 데이터가 있는 부분까지 한번에 갈 수 있습니다. (실제 데이터가 10만개 100만개 이렇게 있을수도..

DB/EXCEL 2023.05.22
728x90
반응형