سؤال

لدي الجدول مع البيانات التالية

empid   empname deptid   address
--------------------------------
aa76    John     6       34567
aa75    rob      4       23456
aa71    smith    3       12345
aa74    dave     2       12345
a77     blake    2       12345
aa73    andrew   3       12345
aa90    sam      1       12345
aa72    will     6       34567
aa70    rahul    5       34567

لقد استخدمت الاستفسارات التالية:

select deptid, EMPID ,EMPNAME ,ADDRESS
from mytable
group by 1,2,3,4

الذي يعطي النتيجة:

deptid  empid  empname address
------------------------------
1       aa90   sam      12345
2       aa74   dave     12345
2       aa77   blake    12345
3       aa71   smith    12345
3       aa73   andrew   12345
4       aa75   rob      23456
5       aa70   rahul    34567
6       aa76   John     34567
6       aa72   will     34567

وبالنسبة للنظر:

select distinct (deptid),EMPID,EMPNAME,ADDRESS
from mytable

مجموعة النتائج هي:

deptid empid empname address   
----------------------------
1      aa90  sam     12345
2      aa74  dave    12345
2      aa77  blake   12345
3      aa71  smith   12345
3      aa73  andrew  12345
4      aa75  rob     23456
5      aa70  rahul   34567
6      aa72  will    34567
6      aa76  John    34567

في الاستعلام الثاني رغم أنني أعطيت DISTINCT للكتبيد، كيف وصلت حصلت على مكررة Deptid ...

هل يمكن أن تفسر هذا؟

هل كانت مفيدة؟

المحلول

DISTINCT الرجوع إلى السجلات المميزة ككل، وليس حقول متميزة في السجل.

نصائح أخرى

DISTINCT يزيل تكرار الصفوف. GROUP BY مجموعات سجلات فريدة من نوعها، وتتيح لك إجراء وظائف مجمعة.

DISTINCT يعمل فقط على الصف بأكمله. لا تخضل في التفكير SELECT DISTINCT(A), B يفعل شيئا مختلفا. هذا يعادل SELECT DISTINCT A, B

في حين أن المجموعة من قبل جميع الأعمدة ومميزة ستمنحك نفس النتائج في Teradata، فإن لديهم خوارزميات مختلفة وراء الكواليس وستتحصل بشكل عام على أداء أفضل من استخدام المجموعة من استخدام متميزة. أعتقد أن هناك خططا لتفركتها بنفس الطريقة، لكنها لا تزال مختلفة في الإصدار الذي أستخدمه (V2R6) وأنا لم أحاول على Teradata 12 بعد.

المجموعة من قبل ومميزة كلاهما سيعمل نفسه. مقارنة المجموعة المتميزة من خلال إعطاء أداء جيد لأنها تعالج أقل صفوف وتحتل أقل ذاكرة بكرة

متميزة لن تعمل بشكل جيد مع متعدد العمود. على الرغم من أنها منحت متميزة على عمود واحد ولكنها تعطي مجموعة فريدة من الأعمدة المحددة.

لذلك، تمنح المجموعة من قبل السجلات الفريدة ويمكن أن تفعل المجاميع أيضا.

لا أعرف كيفية شرح الفرق لكنني أعطيك الأمثلة _quith_queries_ من خلال هذا يمكنك فهم الفرق بين أفضل GROUP BY و DISTINCT.

سؤال: كم عدد الأشخاص في كل دولة فريدة من نوعها في طاولة العملاء

select distinct(state), count(*) from customers;

RESULT

Washington  17
----------------------------------------------------------

select State, count(*) from customers GROUP BY STATE;

RESULT

**Arizona    6
Colorado         2
Hawaii           1
Idaho            1
North Carolina   1
Oregon           2
Sourth Carolina  1
Washington   2
Wisconsin    1**

فقط اصنع الجدول الخاص بك وتحقق من النتيجة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top