반응형
그룹화 기준을 사용한 장고 SQL Windows 함수
이 MariaDB 쿼리가 있습니다.
SELECT
DAYOFWEEK(date) AS `week_day`,
SUM(revenue)/SUM(SUM(revenue)) OVER () AS `rev_share` FROM orders
GROUP BY DAYOFWEEK(completed)
그러면 수익 점유율을 보여주는 표가 생성됩니다.
저의 목표는 장고의 ORM 레이어를 사용하여 동일한 것을 보관하는 것입니다.
RawSQL을 사용하여 다음을 시도했습니다.
share = Orders.objects.values(week_day=ExtractIsoWeekDay('date')) \
.annotate(revenue_share=RawSQL('SUM(revenue)/SUM(SUM(revenue)) over ()'))
따라서 그룹화 기준이 없는 단일 값이 생성됩니다.실행되는 쿼리:
SELECT
WEEKDAY(`orders`.`date`) + 1 AS `week_day`,
(SUM(revenue)/SUM(SUM(revenue)) over ()) AS `revenue_share`
FROM `orders`
또한 Window 기능을 사용하면 다음과 같습니다.
share = Orders.objects.values(week_day=ExtractIsoWeekDay('date')) \
.annotate(revenue_share=Sum('revenue')/Window(Sum('revenue')))
그 결과 다음과 같은 쿼리가 발생합니다.
SELECT
WEEKDAY(`order`.`date`) + 1 AS `week_day`,
(SUM(`order`.`revenue`) / SUM(`order`.`revenue`) OVER ()) AS `rev_share`
FROM `order` GROUP BY WEEKDAY(`order`.`date`) + 1 ORDER BY NULL
하지만 그 데이터는 완전히 틀렸습니다.창에서 테이블 전체를 사용하지 않는 것 같습니다.
미리 도와주셔서 감사합니다.
언급URL : https://stackoverflow.com/questions/64277046/django-sql-windows-function-with-group-by
반응형
'programing' 카테고리의 다른 글
파워셸에서 지능을 얻을 수 있습니까? (0) | 2023.08.19 |
---|---|
열 이름과 ncol이 일치하지 않을 때 MySQL 테이블에 데이터 프레임 열 매핑 (0) | 2023.08.19 |
git 로컬 캐시 지우기 (0) | 2023.08.14 |
두 개의 PySpark 데이터 프레임 연결 (0) | 2023.08.14 |
git 체크아웃 태그, git pull이 분기에서 실패합니다. (0) | 2023.08.14 |