相关疑难解决方法(0)

检索任意时间间隔的聚合

这是我到目前为止的查询,创建每日栏:

SELECT DISTINCT date_trunc('hour',t) AS date,
min(price) OVER w,
max(price) OVER w,
first_value(price) OVER w,
last_value(price) OVER w
FROM ticker
WINDOW w AS (PARTITION BY date_trunc('hour',t));
Run Code Online (Sandbox Code Playgroud)

将"小时"更改为"分钟"或"天"将为我提供与这些单位对应的条形图.

但是,如果我想要5分钟或15分钟的酒吧怎么办?date_trunc()不支持这些,我正在寻找一个很好的方式来做到这一点.

sql postgresql generate-series

4
推荐指数
1
解决办法
1279
查看次数

Django,按一个字段分组,只取每组的最新/最大值并返回 ORM 对象

我有以下 Django (3.0) ORM 模型:

class Portfolio(models.Model):
    code = models.CharField(max_length=20)
    name = models.CharField(max_length=100)
    date = models.DateField()
    created = models.DateTimeField(blank=True, null=True, auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

我想按字段对它们进行分组code,并且对于每个代码,仅采用具有最大值的投资组合date

我知道我可以使用以下查询:

Portfolio.objects.values('code').annotate(latest=Max('date'))
Run Code Online (Sandbox Code Playgroud)

但它存在三个问题:

  1. 它只给了我codelatest字段,所以我失去了其他字段
  2. 它返回一本字典,而我想要一个实际Portfolio对象的列表
  3. Max有效,因为date是 a DateField. 它也适用于其他数字字段类型,但是如果我想按 CharField 的值(字典顺序)对记录进行排序,name并获取每个组的第一条记录,该怎么办?

所以,总而言之,我的问题是:如何使用 Django ORM 检索按一个或多个字段分组的 ORM 对象列表,并仅返回给定任意“order by”子句的每个组的第一个记录?

python django orm django-models

4
推荐指数
1
解决办法
2691
查看次数

查询历史数据

要描述我的查询问题,以下数据很有用:

在此输入图像描述

单个表包含列ID(int),VAL(varchar)和ORD(int)

VAL的值可能会随着时间的推移而发生变化,ID标识的旧项目不会更新,而是附加.ID的最后一个有效项由最高ORD值(随时间增加)标识.

T0,T1和T2是输入数据的时间点.

  • 如何以有效的方式获得结果集?

解决方案不得涉及物化视图等,但应在单个SQL查询中表达.使用Postgresql 9.3.

sql postgresql

3
推荐指数
1
解决办法
132
查看次数

SQL - 如何按日期排序并选择不同的

我有一个名为review的表。

+-------------+-------------------------+
| category_id |          date           |
+-------------+-------------------------+
|           4 | 2020-10-29 00:33:23.485 |
|           4 | 2020-11-23 17:23:14.686 |
|           3 | 2020-11-23 17:28:59.032 |
+-------------+-------------------------+
Run Code Online (Sandbox Code Playgroud)

我想按日期订购并且只获得唯一的category_id。

示例 [1]
日期 desc排序(最新的在前),应返回:

+-------------+-------------------------+
| category_id |          date           |
+-------------+-------------------------+
|           3 | 2020-11-23 17:28:59.032 |
|           4 | 2020-11-23 17:23:14.686 |
+-------------+-------------------------+
Run Code Online (Sandbox Code Playgroud)

exmaple [2]
并按日期 asc排序(最旧的在前),应返回:

+-------------+-------------------------+
| category_id |          date           |
+-------------+-------------------------+
|           4 | 2020-10-29 00:33:23.485 |
|           3 | 2020-11-23 17:28:59.032 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

0
推荐指数
1
解决办法
1442
查看次数

标签 统计

postgresql ×3

sql ×3

django ×1

django-models ×1

generate-series ×1

orm ×1

python ×1