अवधारणा को स्वीकार किए गए उत्तर द्वारा बहुत अच्छी तरह से समझाया गया है, लेकिन मुझे लगता है कि जितना अधिक एक उदाहरण देखता है, उतना ही बेहतर होता है। यहां एक वृद्धिशील उदाहरण है:
1) बॉस कहते हैं "मुझे ब्रांड द्वारा समूहीकृत स्टॉक में आइटमों की संख्या प्राप्त करें"
आप कहते हैं : "कोई बात नहीं"
SELECT
BRAND
,COUNT(ITEM_ID)
FROM
ITEMS
GROUP BY
BRAND;
परिणाम:
+--------------+---------------+
| Brand | Count |
+--------------+---------------+
| H&M | 50 |
+--------------+---------------+
| Hugo Boss | 100 |
+--------------+---------------+
| No brand | 22 |
+--------------+---------------+
2) बॉस कहता है "अब मुझे सभी वस्तुओं की एक सूची प्राप्त करें, उनके ब्रांड और संबंधित ब्रांड की संख्या के साथ"
आप कोशिश कर सकते हैं:
SELECT
ITEM_NR
,BRAND
,COUNT(ITEM_ID)
FROM
ITEMS
GROUP BY
BRAND;
लेकिन आपको मिलता है:
ORA-00979: not a GROUP BY expression
यह वह जगह है जहाँ में OVER (PARTITION BY BRAND)
आता है:
SELECT
ITEM_NR
,BRAND
,COUNT(ITEM_ID) OVER (PARTITION BY BRAND)
FROM
ITEMS;
जिसका अर्थ है:
COUNT(ITEM_ID)
- आइटम की संख्या प्राप्त करें
OVER
- पंक्तियों के सेट पर
(PARTITION BY BRAND)
- कि एक ही ब्रांड है
और परिणाम है:
+--------------+---------------+----------+
| Items | Brand | Count() |
+--------------+---------------+----------+
| Item 1 | Hugo Boss | 100 |
+--------------+---------------+----------+
| Item 2 | Hugo Boss | 100 |
+--------------+---------------+----------+
| Item 3 | No brand | 22 |
+--------------+---------------+----------+
| Item 4 | No brand | 22 |
+--------------+---------------+----------+
| Item 5 | H&M | 50 |
+--------------+---------------+----------+
आदि...