GROUP BY (استعلام NoSQL)
ينطبق على: NoSQL
تقسم GROUP BY
العبارة نتائج الاستعلام وفقا لقيم خاصية محددة واحدة أو أكثر.
بناء الجملة
<group_by_clause> ::= GROUP BY <scalar_expression_list>
<scalar_expression_list> ::=
<scalar_expression>
| <scalar_expression_list>, <scalar_expression>
الوسيطات
الوصف | |
---|---|
<scalar_expression_list> |
تحديد التعبيرات المستخدمة لتجميع نتائج الاستعلام (أو قسمتها). |
<scalar_expression> |
يُسمح بأي تعبير عددي باستثناء الاستعلامات الفرعية العددية والتجميعات العددية. يجب أن يحتوي كل تعبير عددي على مرجع خاصية واحد على الأقل. لا يوجد حد لعدد التعبيرات الفردية أو العلاقة الأساسية لكل تعبير. |
الأمثلة
بالنسبة للأمثلة الموجودة في هذا القسم، يتم استخدام هذه المجموعة المرجعية من العناصر. يتضمن كل عنصر كائنا capabilities
قد يتضمن softwareDevelopment
خصائص و mediaTrained
.
[
{
"name": "Jordan Mitchell",
"capabilities": {
"softwareDevelopment": "python",
"mediaTrained": true
},
"team": "Cloud software engineering"
},
{
"name": "Mikaela Lee",
"capabilities": {
"softwareDevelopment": "javascript",
"mediaTrained": false
},
"team": "Cloud software engineering"
},
{
"name": "Graham Barnes",
"capabilities": {
"softwareDevelopment": "c-sharp",
"mediaTrained": true
},
"team": "Cloud software engineering"
},
{
"name": "Hayden Cook",
"capabilities": {
"softwareDevelopment": "javascript",
"mediaTrained": true
},
"team": "Cloud software engineering"
},
{
"name": "Morgan Connors",
"capabilities": {
"mediaTrained": true
},
"team": "Cloud software engineering"
},
{
"name": "Devon Torres",
"capabilities": {
"softwareDevelopment": "python",
"mediaTrained": false
},
"team": "Cloud software engineering"
},
{
"name": "Sam Centrell",
"capabilities": {
"softwareDevelopment": "javascript",
"mediaTrained": true
},
"team": "Cloud software engineering"
}
]
في هذا المثال الأول، GROUP BY
يتم استخدام عبارة لإنشاء مجموعات من العناصر باستخدام قيمة خاصية محددة.
SELECT
e.capabilities.softwareDevelopment AS developmentLang
FROM
employees e
GROUP BY
e.capabilities.softwareDevelopment
[
{},
{
"developmentLang": "c-sharp"
},
{
"developmentLang": "javascript"
},
{
"developmentLang": "python"
}
]
في هذا المثال التالي، يتم استخدام دالة نظام تجميعية (COUNT
) مع التجميعات لتوفير إجمالي عدد العناصر لكل مجموعة.
SELECT
COUNT(1) AS trainedEmployees,
e.capabilities.softwareDevelopment AS developmentLang
FROM
employees e
GROUP BY
e.capabilities.softwareDevelopment
[
{
"trainedEmployees": 1
},
{
"trainedEmployees": 1,
"developmentLang": "c-sharp"
},
{
"trainedEmployees": 3,
"developmentLang": "javascript"
},
{
"trainedEmployees": 2,
"developmentLang": "python"
}
]
في هذا المثال النهائي، يتم تجميع العناصر باستخدام خصائص متعددة.
SELECT
COUNT(1) AS employeesWithThisTraining,
e.capabilities.softwareDevelopment AS developmentLang,
e.capabilities.mediaTrained AS mediaReady
FROM
employees e
GROUP BY
e.capabilities.softwareDevelopment,
e.capabilities.mediaTrained
[
{
"employeesWithThisTraining": 1,
"developmentLang": "python",
"mediaReady": true
},
{
"employeesWithThisTraining": 1,
"developmentLang": "javascript",
"mediaReady": false
},
{
"employeesWithThisTraining": 1,
"developmentLang": "c-sharp",
"mediaReady": true
},
{
"employeesWithThisTraining": 2,
"developmentLang": "javascript",
"mediaReady": true
},
{
"employeesWithThisTraining": 1,
"mediaReady": true
},
{
"employeesWithThisTraining": 1,
"developmentLang": "python",
"mediaReady": false
}
]
الملاحظات
- عندما يستخدم استعلام عبارة
GROUP BY
، يمكن أن تحتوي العبارةSELECT
فقط على مجموعة فرعية من الخصائص ووظائف النظام المضمنة في العبارةGROUP BY
. استثناء واحد هو الدالات التجميعية، والتي يمكن أن تظهر في العبارةSELECT
دون تضمينها في العبارةGROUP BY
. يمكنك أيضا دائما تضمين القيم الحرفية فيSELECT
عبارة . GROUP BY
يجب أن تكون العبارةSELECT
بعد عبارة وFROM
وWHERE
وقبل العبارةOFFSET LIMIT
. لا يمكنك استخدامGROUP BY
مع عبارةORDER BY
.GROUP BY
لا تسمح العبارة بأي من الميزات أو الخصائص أو الوظائف التالية:- تسمية خصائص الاسم المستعار أو تسمية وظائف النظام بالاسم المستعار (لا يزال يسمح بالاسم المستعار ضمن العبارة
SELECT
) - Subqueries
- دالات النظام التجميعية (يسمح بهذه الدالات فقط في
SELECT
عبارة )
- تسمية خصائص الاسم المستعار أو تسمية وظائف النظام بالاسم المستعار (لا يزال يسمح بالاسم المستعار ضمن العبارة
- الاستعلامات التي لها وظيفة نظام تجميعية واستعلام فرعي بها
GROUP BY
غير مدعومة. - يمكن أن تحتوي الاستعلامات عبر الأقسام
GROUP BY
على 21 وظيفة نظام تجميعية كحد أقصى.