728x90
반응형

DB/SQL 6

[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
728x90
반응형