اوراکل 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.
.این قابلیت، همان نتیجه را تولید میکند اما باعث وضوح بیشتر کوئری و کاهش تکرار کد میشود