اوراکل 23ai چندین قابلیت جدید به عبارت GROUP BY اضافه کرده است که باعث سادهتر شدن نگارش کوئری و بهبود خوانایی آن میشود، بهویژه زمانی که دادهها بر اساس چند ستون گروهبندی میشوند.
از این نسخه، عبارت GROUP BY از بهبودهای زیر پشتیبانی میکند:
-
استفاده از نام مستعار ستون در GROUP BY: میتوانید مستعار (Alias) ستونهایی که در بخش SELECT تعریف کردهاید را مستقیماً در عبارت GROUP BY استفاده کنید.
-
ارجاع به موقعیت ستون در GROUP BY: میتوانید به ستونها در عبارت GROUP BY با استفاده از شماره موقعیت آنها در لیست SELECT ارجاع دهید.
این قابلیتها باعث کاهش تکرار و کوتاهتر شدن دستورات SQL شده و نگهداری آنها را آسانتر میکند.
در بروزرسانی نسخه 23.9، اوراکل قابلیت دیگری معرفی کرده است: عبارت GROUP BY ALL.
عبارت GROUP BY ALL دیگر نیازی به تکرار تمام ستونهای غیرتجمیعی (Non-Aggregate) از بخش SELECT در عبارت GROUP BY ندارد. در نسخههای قبلی، برای عبارت GROUP BY می بایست همه ستونهای غیرتجمیعی بهصورت صریح در آن ذکر شوند. مثال:
SELECT OWNER, DATA_TYPE, NULLABLE, COUNT(*) FROM DBA_TAB_COLUMNS where owner='AUDSYS' GROUP BY OWNER, DATA_TYPE, NULLABLE; OWNER DATA_TYPE N COUNT(*) -------------------- ------------------------- - ---------- AUDSYS VARCHAR2 Y 325 AUDSYS NUMBER Y 77 AUDSYS CLOB Y 14 AUDSYS RAW Y 8 AUDSYS TIMESTAMP(6) Y 8 AUDSYS NUMBER N 4 AUDSYS TIMESTAMP(6) N 1 7 rows selected.
با قابلیت جدید GROUP BY ALL همین کوئری را میتوان به شکل کوتاهتری نوشت:
SQL> SELECT OWNER, DATA_TYPE, NULLABLE, COUNT(*) FROM DBA_TAB_COLUMNS where owner='AUDSYS' GROUP BY ALL; OWNER DATA_TYPE N COUNT(*) -------------------- ------------------------- - ---------- AUDSYS VARCHAR2 Y 325 AUDSYS NUMBER Y 77 AUDSYS CLOB Y 14 AUDSYS RAW Y 8 AUDSYS TIMESTAMP(6) Y 8 AUDSYS NUMBER N 4 AUDSYS TIMESTAMP(6) N 1 7 rows selected.
.این قابلیت، همان نتیجه را تولید میکند اما باعث وضوح بیشتر کوئری و کاهش تکرار کد میشود