python - PostgreSQL HStore() 字段
问题描述
我在我的 django 模型中使用了多个 PostgreSQL HStore 字段。HStore 字段的键是大整数,与应用程序中的其他一些字段相关,因此是随机的,不是预定义的。值是十进制数。像这样:"10intNumber" => "DecNumber"
。所有 hstore 字段中都有相同的10IntNumber键,即使DecNumber为 0。该模型还包括用户的外键和状态。
- 状态为 1:仅对 hstore_field_1 进行评估和求和。
- 状态为 0:hstore_field_1 和 hstore_field_2 都被评估和求和。
我使用这样的 SQL 查询,对预定义的 10intNumber 值中的所有DecNumber 求和,其中d.number 是之前的 10IntNumber 并且是从另一个查询集检索的:
query = f"""
SELECT
SUM(hstore_1::numeric) AS hstore_1_field,
SUM(hstore_2::numeric) as hstore_2_field,
FROM (
SELECT
UNNEST(hstore_field_1-> ARRAY {[str(d.number) for d in queryset]}) AS hstore_1,
UNNEST(CASE WHEN status = '0' THEN hstore_field_2-> ARRAY {[str(d.number) for d in queryset]} ELSE ARRAY ['0'] END) AS hstore_2,
FROM
public.app_model
WHERE
hstore_field_1?| ARRAY {[str(d.number) for d in queryset]}
) AS b;
"""
我还使用 SQL 查询按相关的 user_id 和 user__othemodel_id 对总和进行分组。但之后我对 SQL 的了解就不足了。
我想总结前面提到的所有内容,但想按10intNumber对摘要进行分组。所以结果看起来像:
10intNumber | 总和商店 1 | 总店 2 |
---|---|---|
xxxxxxxxxxx | 十进制(y.yy) | 十进制(y.yy) |
xxxxxxxxxxx | 十进制(y.yy) | 十进制(y.yy) |
非常感谢您的帮助。
解决方案
推荐阅读
- javascript - Canvas Context return zeros
- makefile - 'make -j4' 失败但 'make' 在新的构建机器上传递
- php - 如何在 php 中修复 Datediff 语法
- react-native - 我想在 React Native 的角落里写几句
- python - 一段代码不工作 | 没有错误信息
- javascript - 输入按钮以使用 svg 而不是文本
- python - 当我对代码进行细微更改时,“张量对象仅在启用急切执行时才可迭代”错误
- python - 使用 python 从 HTML 中获取文本
- android - SQLITE 表未插入默认值
- angular - 从 Angular Material 中删除项目选择