bugfix> sql > 投稿

かなり単純な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の順序ではなく、行はランダムです。

回答 1 件
  • 報告してくれた@DShultzに感謝します。これは確かに事実であり、私はこれについてhttps://github.com/prestosql/presto/issues/6008を報告しました。これが望ましい動作なのか、誤った動作なのかについて、そこで議論を続けましょう。

    回避策として....まあ、括弧を削除します。しかし、これはあなたがすでに知っています。

    より一般的な理由なぜこれが当てはまります-Prestoは、SQL仕様に準拠して、クエリのセマンティクスを変更しないORDER BYを無視します(サブクエリなど)。詳細については、https://prestosql.io/blog/2019/06/03/redundant-order-by.htmlを参照してください。

あなたの答え