我们开发了一种反腐败分析工具,用于分析政府交易并显示可视化图表。
我们有一个表"交易" ,其中包含以下列: ID,付款人,收件人,金额和created_at。
例如:
mJavaDetector = new CascadeClassifier( mCascadeFile.getAbsolutePath() );
//must add this line
mJavaDetector.load( mCascadeFile.getAbsolutePath() );
如何:
1。通过付款人获取交易总额(例如" Kyiv CityHoll")并按金额对付款人进行评级(必须将相同的付款人分组)?
2。获取付款人和兑换商的交易总额(例如来自" Kyiv CityHoll"以及#34; Google"的所有交易)
谢谢!
答案 0 :(得分:1)
使用annotate
and Sum
/Count
,您可以执行大量聚合查询。以下是您的示例的查询:
from django.db.models import Sum
# 1. Get total of transactions per payer, ranked by total
Transactions.objects.values('payer').annotate(total=Sum('amount')) \
.order_by('-total')
# 2. Get total per payer/receiver, ranked by total
Transactions.objects.values('payer', 'receiver').annotate(total=Sum('amount')) \
.order_by('-total')
您将获得dict
的结果列表(因为它与您的模型不匹配),因此如果payer
和/或receiver
是ForeignKey,请不要忘记获取正确的属性来检索名称(或执行单独的查询以获取其完整对象)