tsql - 为什么 ORDER BY 在 Presto 查询中不起作用?
问题描述
我有一个相当简单的 Presto 查询,它不是按我指定的列排序:
(SELECT
tag_monitor_domains.property_name,
count(*) as HourCount
FROM pageviews
INNER JOIN tag_monitor_domains
ON pageviews.property_id = CAST(tag_monitor_domains.property_id AS varchar)
WHERE FROM_UNIXTIME(pageviews.time) > date_add('month', -1, CURRENT_DATE)
AND FROM_UNIXTIME(pageviews.time) < date_add('hour', -0, CURRENT_TIMESTAMP)
GROUP BY 1
ORDER BY 1 DESC)
但结果不是按 property_name 排序的,行是随机的。
解决方案
感谢@DShultz 的报告。确实是这样,我为此报告了https://github.com/trinodb/trino/issues/6008。让我们继续讨论这是期望的行为还是错误的行为。
作为一种解决方法....好吧,删除括号。但这你已经知道了。
出现这种情况的更一般的原因是——Presto忽略了 ORDER BY,它不会改变查询的语义(例如在子查询中),这是由 SQL 规范管理的。有关更多信息,请参阅https://trino.io/blog/2019/06/03/redundant-order-by.html。
推荐阅读
- python-3.x - 试图获取加入 Discord.py 的频道用户的频道 ID
- javascript - TypeError:无法读取未定义的属性“id”(用户未定义)
- sftp - 使用 python 上传 SFTP 文件
- ubuntu - Composer 在根文件夹中安装新项目
- python - 使用 random 如何生成没有小数的伪随机数?
- jpa - JPA更新父插入子
- python - 为什么“裸”CPU 上的 Keras 模型更快?
- python - 使用 Python 将记录存储在二叉树中
- java - 无法选择下拉菜单(Selenium,java)
- redis - 为什么在启用持久性的主服务器重新启动时副本会执行完全重新同步?