# aggregate
길이에 따른 연산
문제 설명 정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ num_list의 길이 ≤ 20 1 ≤ num_list의 원소 ≤ 9 입출력 예 num_list result [3, 4, 5, 2, 5, 4, 6, 7, 3, 7, 2, 2, 1] 51 [2, 3, 4, 5] 120 입출력 예 설명 입출력 예 #1 리스트의 길이가 13이므로 모든 원소의 합인 51을 return합니다. 입출력 예 #2 리스트의 길이가 4이므로 모든 원소의 곱인 120을 return합니다. Enumerable.Sum [
[Postgresql] Handling Aggregates
Mastering PostgreSQL 13 Chapter 4: Handling Advanced SQL Loading some sample data Applying grouping sets overall avg > ROLLUP: 데이터를 즉시 보여줄 때 적합 > - GROUP BY region + the overall average > CUBE: 더 많은 flexibility 제공. grouping 의 모든 combination 제공 > - GROUP BY region, country > - GROUP BY region > - GROUP BY country > - the overall average GROUPING SETS 지정한 set 들을 하나 하나 다 보여줌. Investigating performance 비용이 비싼 쿼리들의 수를 감소시켜주게끔 도와줌 `MixedAggre
리뷰에서 받아온 별점으로 상점 평점 매기기
필요한것은 상점별 리뷰 갯수와 별점 리뷰 갯수는 이전편에서 이미 받아왔고 별점은 값을 더해줘야 한다. 상점 평점=총 별점을 더한값/리뷰갯수 이므로... 별점을 더하려면 for문을 써야하나? 그러면 font단에서 계산을 한다는건데.. back에서 계산을 마친 후에 front에서는 조회만 하는게 좋을것 같다. 리뷰 갯수도 back에서 계산했으니까...? 문제 mongoDB에서 컬렉션(reviews)에서 특정 쿼리(bakery_id)를 만족하는 필드(point)값을 받아서 더하는 방법? 해결 aggregate()메서드 사용 $match 연산자를 사용하여 bakery_id가 일치하는 데이터를 찾는다. $group 연산자를 사용하여 bakery_id로 그룹화하고, $sum 연산자를 사용하여 point 필드값을 더한다. 의문점 _id는 단순한 변수명인지 필수값인건지? -> 그룹핑할 기준이 되는 필드를 지정하는데 사용되는 특별한 필드이므로 다른 이름을 쓰면 오류 생김

[DDD] 도메인 주도 설계 애그리거트(Aggregate) 알아보기
개요 도메인 주도 설계 공부 3일차 오늘은 애그리거트에 대해서 알아보겠습니다. 애그리거트란? 애그리거트란 관련된 객체들을 모아 하나의 단위로 취급하는 개념으로, 객체지향 프로그래밍에서, 애그리거트는 객체 간의 관계를 정의하는 방법 중 하나로, 논리적으로 관련된 객체들을 그룹화하여 하나의 묶음으로 다룬다. 쉽게 말해 여러 개의 객체를 묶어 하나의 큰 객체로 다루는 것이다. 애그리거트는 일반적으로 Entity, Value로 구성되고, 애그리거트는 엔티티와 밸류의 관계를 나타내는 루트 root 엔티티를 포함하며 루트 엔티티는 애그리거트에 속한 다른 객체들과 관계를 정의한다. 애그리거트는 불변성을 유지하며, 내부 구현을 캡슐화한다. 애그리거트는 D
[MongoDB] relation 참조 없는 document 가져오기
transaction collection 에 없는 user colleciton 가져오기 reference stackoverflow
Sequelize addScope, aggregate, bulkCreate
이 포스트는 Sequelize 공식문서의 Model Page를 설명하는 글이다. 1. addScope addScope의 사용법을 이해하기 위해서는 우선 Scope가 무엇인지 알아야한다. Scope란? Scope는 Object.find method의 reusable함을 높이기 위해서 도입된 개념이다. Database에서 다양한 조건으로 instance들을 조회할텐데, 조회할때 조건들을 매번 일일이 작성하는 것이 아니라, 조회 조건의 별명을 붙여놓고 사용하고 싶을때 꺼내서 사용하는 느낌으로 이해하면 될 것 같다. 다음과 같이, scope는 finder object가 될수도 있고, finder object를 return 하는 함수가 될수도 있다. 그러나, default scope는 무조건 finder object여야 한다! Model.addScope 를 사용하여
도메인 주도 설계(DDD)란
Overview 저번 시간에는 마이크로서비스 아키텍처에 대해 알아보았다. 마이크로서비스 아키텍처로 프로젝트를 하기 위해서는 분석 설계 단계에서 마이크로서비스를 도출해내는 작업을 해야한다. 이때 주로 사용하는 기법이 DDD(도메인 주도 설계)의 전략설계이다. DDD는 2003년에 처음 등장한 설계 접근 방식이며 마이크로서비스는 2011년 소프트웨어 설계자를 위한 행사에서 처음 선보였다. 당시 Netflix와 Amazon은 마이크로서비스의 초기 개척자였다. MSA에서 DDD가 왜 부각되었을까? MSA를 위해 분석 설계하는 단계에서 서비스를 식별하는 과정에 DDD가 많은 도움이 되었기 때문이다. 마이크로서비스 아키텍처를 분석, 설계하는 과정에서 DDD의 모든 개념이 사용되지 않는다. DDD의 여러 개념 중 필요한 개념만 골라 사용한다. 이번 시간에는 DDD(도메인 주도 설계)에 대해 알아보려고 한다. 도메인 주도 설계

20220711) DDD와Aggregate Root 설정
현재 ceos 15th All.G 백엔드로써 프로젝트 WEATO 를 진행하고 있는 중이다. 이거때문에 블로그의 진척이 더뎠다. 플젝 진행하면서 커밋할 뿐 아니라 진행 사항에 대해 블로그에 정리하는사람들도 많던데 그게 나는 아니다 사실 이걸 하면서도 내가 가장 애매하고 고민했던 부분은 도메인을 어떻게 설계하는가? 였다. 그 부분이 나에게 지속적인 갈등과 결정을 요구하는 부분이었는데.. 일단 대부분의 예제들이 주문 예제를 들고 있는것을 보며 으흠으흠 그렇구만..하고 넘어갔지만 정작 내 프로젝트인 커뮤니티에 적용을 하려고 보니 이게 영 설계하기가 쉽지 않았다. 뭔가 Aggregate Root로써 Member(회원) 와 Post(게시글) 이 존재하여야 한다! 까지는 명확히 이해를 했다. 그런데 그 이후, Comment(댓글) 에 대해서는? 이 부분이 가장 나를 고민하게 만들었다. 어떻게보면 Post와 Commen

[ORM]집계함수 사용법(feat. aggregate, annotate)
  위 데이터베이스 테이블을 바탕으로 annotate와 aggregate를 이해해보자. Avg, Max, Min, Count, Sum 등 다양한 집계 함수를 사용할 수 있지만, 우선 지금은 avg, min 정도만 import 했다. ✅ annotate   annotate는 각각의 컬럼값에 대한 계산을 QuerySet 형태로 반환한다. ✔ 호텔별 최저가 방 가격 구하기   min 이라는 가상의 속성을 만들어서 호텔별 최저가 방 가격을 구해보자. ✔ 호텔별 평균 방 가격 구하기 ✅ aggregate   aggregate는 특정 컬럼 전체에 대한 계산을 QuerySet 형태로 반환한다. ✔ 전체 호텔의 평균 가격 구하기   위 값은 아래 코드로도 얻을 수 있다. 참고 사이트 [엑셀에 대입해서 이해하기](http://raccoonyy.github.io/django-a
ORM cookbook 5
15. aggregate - Avg, Max, Min, Sum, Count 일반적인 집계 기능을 수행하는 Max, Min, Avg, Sum {'id__avg': 7.5} {'id__max': 14} {'id__min': 1} {'id__sum': 105} 16. 랜덤 데이터 뽑기 정렬 기준을 무작위로 설정하기 결국 정렬을 해야하므로 다른 방법에 비해 비용이 들 수 있다. 필드값이 연속적인 경우 최소값과 최댓값 사이의 난수를 생성하기 중간에 삭제된 항목이 많은 경우 여러번 루프를 돌며 체크해야할 수 도 있다. 17. django가 지원하지 않는 DB의 함수 django에서 지원하지는 않지만 DB의 함수를 꼭 사용해야하는 경우는 django.db.models.Func을 이용하자

aggregate
본 글은 글쓴이가 꺼내보기 위함의 목적이 큰 글입니다 :) aggregation : 집계 파이프라인 개념(이전 단계의 연산결과를 다음 단계연산에 이용)을 토대로 순서대로 파이프라인을 거쳐 문서를 연산하고 하나의 문서의 형태로 집계함. aggregate([ pipeline ]) pipeline에서 유용하게 쓰는 option들은 아래와 같다. lookup SQL join과 같은 기능을 함. 공통된 document를 통해 다른 collection 의 데이타를 가져 올 수 있음. 사용법 기존 model 데이타에 as 로 지정한 필드가 추가되어 join 한 값이 나옴. <span style='text-decoration
데브코스 W3D3
SELECT DISTINCT COUNT CASE WHEN STRING ORDER BY GROUP BY & Aggregate 테이블의 레코드를 필드를 기준으로 그룹핑하여 그룹별 다양한 정보를 계산하는 데 사용된다. 사용방법은 먼저 GROUP BY로 그룹핑할 필드를 결정하고 각 그룹별로 계산할 내용을 Aggregate를 사용해서 처리한다. COUNT : 그룹별 갯수 SUM : 그룹별 합 AVG : 그룹별 평균 MIN : 그룹별 최소 MAX : 그룹별 초대 GROUP_CONCAT : 그룹별 문자열 연결 사용예시
[Django] Annotate, Aggregate
annotate(), aggregate() annotate() 각 인수는 QuerySet의 각 객체에 추가 될 주석이다. 주석들은 단순한 값, 모델의 필드에 대한 참조, QuerySet의 각 객체와 관련된 집계이다. 새로운 요소를 데이터 쿼리에 추가하고 해당 요소를 따로 출력해볼 수 있도록 해주는 것인데, 데이터가 몇 개 존재하는지를 .count()라는 함수를 이용해서 annotate해주고 이를 __count로 접근할 수 있다. 따라서 .annotate()는 필드 하나를 만들고 거기에 '어떤 내용'을 채우게 만드는 것이다. aggregate() QuerySet에 대해 계산된 집계를 dict형태로 반환한다. 집계도 쿼리식이기 때문에 다른 집계나 값과 결합하여 복잡한 집계를 만들 수 있다. 키워드 인수를 사용해서 집계된 집계는 키를 주석의 이름으로 사용한다. 익명 인수는 집계

37. TIL (Q객체, F객체, annotate, aggregate)
2차프로젝트에서도 사용될듯한..! 개념인 Q객체, F객체, annotate, aggregate에 대해 다시 한 번 공부를 하고 가자! ✏️ Q객체 : 간단하게 요약하면, 쿼리 그 자체를 객체로 불러와서 다룬다. Q()는 과 같은 의미! : 와 같은 형태로 import 해온 후 사용할 수 있다. Q객체는 OR, AND, NOT 등의 연산을 할 수 있다. ✔️ OR(|)을 사용하는 예시 Q객체를 사용한 구문이 훨씬 간결하다! ✔️ and(&)을 사용하는 예시 ✔️ NOT(~)을 사용하는 예시 전체적으로 Q객체를 사용하는 구문이 훨씬 깔끔하다. 의 형태로 쿼리 그 자체를 객체로 불러와 연산하는데 사용한다! ✏️ Annotate : 필요한 작업을 수행할 가상의 필드를 만들고 내용을 채울 수 있다! 내용을 무엇으로 채우는가? 다른 필드의 값을 그대로 복사하거나, 다른 필드를 조합한 값을 넣을 수 있다~ 엑셀의 컬럼을 추가하는

Nest.js TypeORM 리팩터링 (DDD Aggregate)
Overview 솔리다리테 백엔드에서 Nest.js와 TypeORM를 애용하는 편입니다. 두 라이브러리 모두 독스의 완성도가 훌륭한 편입니다. 하지만 실무에 적용하면서 여러 난관에 부딪히게 되더군요. 😃 Repository와 Service의 경계를 분리를 하고, 리팩터링하여 재사용성을 높였던 방법을 공유하고자 합니다. Aggregate (집합체) Aggregate는 데이터 변경의 단위로 다루는 연관 객체의 묶음이라고 합니다. 일반적으로 우리가 생각하는 비즈니스 도메인의 단위가 됩니다. 예를 들어, User 객체와, UserAuth (유저 권한), UserProfile (유저 프로필)객체를 통틀어 하나의 Aggregate라고 할 수 있습니다. UserAuth와 UserProfile은 User에 종속적이기 때문에 UserAuth나 User
mongo db 에서 조인하는 법 (lookup)
Collection "project": Collection "batch": project 콜렉션은 여러개의 batch 를 가질 수 있음. project 의 batchids 필드에 프로젝트가 포함하고 있는 배치가 무엇인지 입력해 두었음. batchids 의 각각의 요소들은 배치의 _id값. 이 때 이 두가지 콜렉션을 한 번에 보고자 함. 내가 원하는 결과물 은 다음과 같다: 몽고디비에서 조인을 하기 위해서는 lookup 을 사용한다. from : 조인대상 콜렉션 이름 let : 파이프라인에서 사용할 변수를 선언한다. map : batch_ids 필드가 string 타입이기 때문에 ma 이용해서 objectId 로 변경해준다. pipeline : $$를 이용해서 let 에서 선언한 batchObjectIds 를 선택함 match : $를 통해 조인대상할 콜렉션의(batch collection) _id 값을 가져온다. -> le

[SQL] GROUP BY, AGGREGATE
GROUP BY 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산 순서 그룹핑을 할 필드를 결정(하나 이상의 필드가 될 수 있음) GROUP BY로 지정(필드 이름을 사용하거나 필드 일련번호를 사용) Aggregate함수를 사용 Aggregate란 COUNT, SUM, AVG, MIN, MAX, LISTAGEE... 등등 연산하는 함수들을 말함 월별 세션수를 계산하는 SQL만들기 session_ti
🚦 장고 Annotate & Aggregate
1. annotate annotate는 장고의 쿼리표현식 중 하나이다. 1-1. 필드 이름 바꾸기 두가지의 모델이 있고, foreign key로 연결됐다고 가정해보자 🔍 쿼리셋에서 불러올 때 >그럼 쿼리셋 결과가 이런식으로 언더바가 그대로 나온다. annotate를 써서 바꿔보자 >그럼 결과가 이렇게 나온다!!! 1-2. 어떠한 기준으로 값을 묶을 때 ex. 날짜별(created)로 값을 묶고 싶을 때 1-3. 모델의 칼럼 갯수 세기 장고의 models.py에서 클래스의 칼럼에 데이터가 몇개 있는지 확인 할 때 예를 들어, 나는 models.py 에 처럼 로직을 짰고, category라는 클래스에 name칼럼에 데이터가 몇개 인지 확인하고자 한다면 이렇게 뜬다. 실제 내 데이터에 7개의 row가 존재한다. 2. aggregate Django 에서는 필드 전체의 합, 평균, 개수 등을 계산할 때 사용한다

🚦 장고 ORM 이해하기
쿼리셋 이해하기 1. 필요한 열만 골라 조회하기 >2가지 방법이 있다. 1 ) 쿼리셋의 values 와 values_list 2 ) only 메소드 ex. firstname 칼럼과 lastname 칼럼에서 이름이 R로 시작하는 열 찾기 계속 추가중 == ===========
MongoDB 사용자 간 거리 받기
MongoDB 사용자 간 거리 받기 mongo에서 $near를 통해 주변 사용자를 받을 수 있지만, 구체적인 거리를 받기에는 부족한다. 이때 aggregate쿼리로 구체적인 거리를 받아올 수 있다. aggregate 예 쿼리 결과 dist안의 calculated 항복을 보면 계산된 거리를 얻을 수 있다. > $near의 경우 구체적인 필드를 지정해야하는데 $geoNear의 경우 구체적인 필드 지정 없이 찾을 수 있다. 쿼리 결과에 dist의 calculated에 구체적인 거리를 얻을 수 있다. References GeoNear and Mongo