본문 바로가기

SQL27

Mysql 샘플링 (Sampling) : 랜덤 추출 Mysql 에서 랜덤(무작위)으로 몇개의 데이터를 추출하는 경우에 사용할 수 있는 쿼리 문장이다. order by 절에 rand() 함수를 적용하면 데이터가 랜덤한 순서로 추출이되면 limit 절로 그 갯수를 정하는 방식이다. Select * From tb_sample Order by rand() Limit 100 위의 쿼리는 tb_sample 이라는 테이블에서 랜덤으로 100개의 raw 를 추출하는 쿼리문장이며, 필요에 따라서 Where 절을 추가할 수 있다. Where 절이 추가되면, 조건이 적용된 데이터중에서 랜덤하게 100개를 추출한다. 2022. 4. 6.
MySQL 날짜/시간 함수 mysql 날짜/시간 함수 정리 -- 현재시간 날짜 구하기 select now(), current_date, current_time -- 날짜 더하고 빼기 select now(), date_add(now(), interval 1 day) select now(), date_add(now(), interval 4 hour) select now(), date_sub(now(), interval 1 day) select now(), date_sub(now(), interval 4 hour) -- 두 시간의 차이 select timestampdiff(MONTH, now(), date_add(now(), interval 4 month)) 시간주기에 아래의 단위를 사용할 수 있다. SECOND : 초 MINUTE :.. 2022. 3. 29.
일련번호(날짜) 생성 in Presto 1. 일련번호 생성 select seq from unnest(sequence(1, 10, 1)) as t1(seq) select seq from unnest(sequence(20, 0, -2)) as t1(seq) 2. 일련의 날짜 생성 SELECT dt FROM unnest(SEQUENCE(DATE('2020-06-01'), DATE('2020-06-14'), INTERVAL '1' DAY)) AS t1(dt) SELECT dt FROM unnest(SEQUENCE(DATE('2020-06-01'), DATE('2020-06-14'), INTERVAL '3' DAY)) AS t1(dt) 3. 응용 : 1부터 100까지의 수 중에서 랜덤하게 10개 뽑기 -- 수의 중복 없이 뽑기 select seq fr.. 2021. 4. 20.
M+3 의 재 구매율, M+(1,2,3)의 재 구매율 M+3 의 '재구매율' 이란? 예를 들어 1월의 (신규) 구매자들 중에 4월달에도 재구매를 한 비율을 뜻한다. M+(1,2,3) 의 '재구매율' 이란? 예를 들어 1월의 (신규) 구매자들 중에 2월부터 4월까지 재구매를 한 비율을 뜻한다. 이를 SQL를 이용하여 계산해보도록 하자. 1. 아래와 같이 tbl_uesr, tbl_order 라는 테이블이 있다고 가정합니다. 2. 2019년1월 부터 2019년 12월까지 12개월을 대상으로 'M+3 재구매율' select base_mon.now_dt , count(distinct base_mon.user_id) as cnt_curmon , count(distinct future_mon.user_id) as cnt_nextmon , count(distinct fu.. 2020. 6. 25.
with statement in SQL with 문을 사용하면 SQL 문장을 매우 직관적으로 사용할 수 있는데, 다음과 같이 몇 가지 형태로 사용할 수 있다. 1. sub query를 with 문 으로 with list1 as ( select id, area from tbl_address where area = 'seoul' ), list2 as ( select subject, avg(score) from tbl_score where id in (select id from list1) group by subject ) select * from list2; 물론 위의 쿼리는 with문을 사용하지 않고 처리할 수도 있지만, with 문안의 가상테이블에서 다른 가상테이블을 조건으로 사용할 수도 있으며 복잡한 쿼리를 단순하게 직관적으로 표현할 수 있.. 2020. 1. 29.
How To Calculate Cohort Retention in SQL ‍Losing users sucks. Losing customers really sucks. If you’re a startup, you know that Retention is King. You should always be measuring and improving your user retention, so you can keep more users over time. In this post, we’ll show you how to calculate user retention on your own data in SQL. Defining retention If Gloria used the product on Monday and used the product again on Tuesday, she is .. 2020. 1. 7.
Mysql에서 rownum 과 그룹별 rownum 이런 table이 있다고 가정하자 name : scores column : class, name, score class (반), name(학생이름), score(점수) 하고자 하는 작업은 각 반별로 상위 점수 3명을 구하는 것이다. 1. rownum mysql에서는 rownum을 제공하지 않기 때문에 다음과 같이 해서 구할 수 있다. select class, name, score, @rownum:=@rownum+1 as rownum from scores, (select @rownum:=0) r 2. rownum by group : 그룹별로 rownum을 만들어 보자 -- group 별 rownum select class, name, score , case when @grp = class then @row.. 2019. 8. 8.
[SQL] 중복제거 쿼리 'table1' 이라는 이름의 다음과 같은 테이블이 있다고 하면, +----+--------+ | id | name | +----+--------+ | 1 | google | | 2 | yahoo | | 3 | msn | | 4 | google | | 5 | google | | 6 | yahoo | +----+--------+ 아래와 같은 쿼리로 중복된 행 중에서 한 행만 남기고 지울 수 있다. DELETE n1 FROM table1 n1, table1 n2 WHERE n1.id > n2.id AND n1.name = n2.name 2018. 2. 19.
[SQL Server] MSSQL에서 행마다 다른 Random number 발생하기 MSSQL 에서 랜덤넘버를 발생하는 코드는 간단하다. Select rand() 하지만, 위의 코드로 여러 행에 걸쳐서 랜덤한 숫자를 발생시키려 하면 각 행마다 같은 랜덤넘버가 적용되어버린다. 이럴때는이렇게 처리하면 된다. select rand(convert(varbinary, newid())) 2016. 5. 26.