我已经为此苦苦挣扎了好几天了。我有一个数据库表,其中包含时间戳记和股票交易信息,包括交易的公司交易代码和价值。每个时间戳代表一天。这是数据模型:
class OwnershipDocument(models.Model):
transactionTimeStamp = models.IntegerField(null=True, blank=True)
issuerTradingSymbol = models.CharField(max_length=50, null=True, blank=True)
valueTransacted = models.FloatField(null=True, blank=True)
我想进行一个django查询,该查询将只选择那些公司的一个时间戳记中有多个交易的股票交易。我想出一个查询来获取每个时间戳的交易计数:
query = OwnershipDocument.objects.filter(issuerTradingSymbol__iexact='ED')
query1 = query.values(
'transactionTimeStamp'
).annotate(count = Count('transactionTimeStamp')).order_by('transactionTimeStamp')
我认为我需要以某种方式将query1与子查询一起使用,但是我不确定如何做到这一点。
我已经使用原始SQL完成了我想要的工作:
query = OwnershipDocument.objects.raw('''
SELECT * FROM insider_app_ownershipdocument
WHERE "valueTransacted" > 1 AND
("issuerTradingSymbol", "transactionTimeStamp") IN
( SELECT "issuerTradingSymbol", "transactionTimeStamp"
FROM insider_app_ownershipdocument
GROUP BY "issuerTradingSymbol", "transactionTimeStamp"
HAVING COUNT (*) > 5)
order by "transactionTimeStamp" DESC, "issuerTradingSymbol"
''')
但是我需要将其链接到以前的django查询对象,显然我无法使用原始SQL。那么如何将原始sql转换为Django查询呢?