Oracle23c: GROUP BY句およびHAVING句の向上による問合せ開発の簡略化 (2023/07/25)

Oracle23c: GROUP BY句およびHAVING句の向上による問合せ開発の簡略化 (2023/07/25)

https://medium.com/oracledevs/oracle23c-simplifying-query-development-with-improved-group-by-and-having-clauses-e6497b554203

投稿者:vijay balebail

Flamboyance of Flamingoes




はじめに


Oracle23cは、問合せ開発を大幅に合理化し、SQL文の可読性を向上させる、エキサイティングな新しい拡張機能を提供します。以前のデータベース・リリースでは、開発者はGROUP BY句およびHAVING句の列定義を繰り返し参照する必要がありましたが、これは煩雑でエラーが発生しやすくなりました。ただし、Oracle23cを使用すると、開発者はこれらの句で列の別名を使用できるようになり、問合せがより簡潔になり、解釈しやすくなりました。さらに、OracleではGROUP BY句およびORDER BY句での列位置のサポートが導入され、問合せ書込みの全体的な柔軟性が向上しています。


GROUP BY句およびHAVING句の簡略化


以前のリリースのサンプル問合せを見てみましょう。


SELECT object_name,object_type, 
to_char(created,'YYYY-MM-DD HH24') as CREATEDi_ALIAS, count(1) as COUNT
FROM all_objects
GROUP BY object_name, object_type, to_char(created,'YYYY-MM-DD HH24')
HAVING count(1) > 10
ORDER BY COUNT
FETCH FIRST 20 ROWS ONLY;


この例では、to_char(作成日、YYYY-MM-DD HH24)でグループ化し、HAVING句でcount(1)を使用します。ただし、Oracle23cでは、GROUP BY句およびHAVING句で列の別名を直接利用できるようになりました。


SELECT object_name,object_type, 
to_char(created,'YYYY-MM-DD HH24') as CREATED_ALIAS, count(1) as COUNT
FROM all_objects
GROUP BY object_name, object_type, CREATED_ALIAS
HAVING COUNT > 10
ORDER BY COUNT
FETCH FIRST 20 ROWS ONLY;


この改善により、問合せが簡略化され、開発者が理解しやすくなります。


列位置句を使用したGROUP BY


Oracle Databaseでは、常に別名と列の位置を使用して、ORDER BYを使用してデータをソートできました。Oracle23cでは、GROUP BY句で列の位置もサポートされるようになりました。前述の例に示すように、別名で参照されるtime1列で結果をGROUPにすることができます。ただし、Oracleでは、GROUP BY句での列位置のサポートもさらに一歩進んでいます。この機能を有効にするには、group_by_position_enabledパラメータをtrueに設定する必要があります。(デフォルトはFALSE)


セッション・レベルまたはシステム・レベルでパラメータを設定します。


ALTER SESSION SET group_by_position_enabled = true;
ALTER SYSTEM SET group_by_position_enabled = true;


このパラメータを有効にすると、列位置を


GROUP BY句。次に例を示します。


SELECT object_name,object_type, 
to_char(created,'YYYY-MM-DD HH24') as CREATED_ALIAS, count(1) as COUNT
FROM all_objects
GROUP BY 1,2,3
HAVING COUNT > 10
ORDER BY COUNT
FETCH FIRST 20 ROWS ONLY;


まとめ


Oracle23cで導入された機能拡張により、より直感的で効率的な問合せ開発が可能になります。開発者は、GROUP BY句およびHAVING句で列の別名を使用することで、わかりやすく簡潔なSQL文を記述できます。さらに、GROUP BY句およびORDER BY句での列位置のサポートによって、問合せ書込みの柔軟性がさらに向上します。


これらの改善により、Oracle23cは開発者にとって使いやすいプラットフォームとなり、別名機能をサポートする他のデータベースからの移行プロセスが容易になります。Oracle23cを使用すると、開発者は、様々なプラットフォームへの問合せの適応に集中でき、最終的にはアプリケーションの移行および開発エクスペリエンスが向上します。


コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)