sql - 如何从我的 postgres 查询中确定结果的顺序?
问题描述
我有以下查询:
SELECT
time as "time",
case
when tag = 'KEB1.DB_BP.01.STATUS.SOC' THEN 'SOC'
when tag = 'KEB1.DB_BP.01.STATUS.SOH' THEN 'SOH'
end as "tag",
value as "value"
FROM metrics
WHERE
("time" BETWEEN '2021-07-02T10:39:47.266Z' AND '2021-07-09T10:39:47.266Z') AND
(container = '1234') AND
(tag = 'KEB1.DB_BP.01.STATUS.SOC' OR tag = 'KEB1.DB_BP.01.STATUS.SOH')
GROUP BY 1, 2, 3
ORDER BY time desc
LIMIT 2
这给了我结果:
有时结果的顺序变化是从 SOH -> SOC 或从 SOC -> SOH。我正在尝试修改我的查询,所以我总是先得到 SOH,然后再得到 SOC。我怎样才能做到这一点?
解决方案
您有两个time
相同的 s。order by
仅用time
作键。当键值相同时,这些键的结果顺序是任意且不确定的。In 可以从一个执行更改为下一个执行。
为防止这种情况,请向 中添加一个额外的列,order by
以便每一行都是唯一的。在这种情况下,这似乎是tag
:
order by "time", tag
推荐阅读
- r - 使用 dplyr 嵌套或分组两个变量,然后对数据执行 Cronbach 的 alpha 函数或其他统计
- java - 页面结束时的迭代返回 false
- database - Clickhouse 没有将新数据插入物化视图
- javascript - 如何使用参考访问 html 视频元素的视频控件、事件和属性
- python-3.x - LSTM 与 CNN 中张量的形状
- amazon-web-services - 求解环境:初始冻结求解失败。灵活解决重试:AWS Sagemaker
- qt - CLion & Qt :qrc/ url 在 Clion 上不起作用
- javascript - 使用 querySelector 跳转到下一个输入
- python - 如何解决comerror:PivotTable 类的PivotFields 方法失败?
- logging - 在 Virtualbox 中使用 Opensearch 配置 Filebeat