suchen
HeimDatenbankMySQL-TutorialORACLE分组统计

ORACLE分组统计

Jun 07, 2016 pm 03:07 PM
oracle分组社区统计进入

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 ROLLUP和CUBE语句。 Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

    ROLLUP和CUBE语句。

    Oracle的GROUP

    BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP

    BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。如果是GROUP BY

    CUBE(A, B, C),则首先会对(A、B、C)进行GROUP

    BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。

    grouping_id()可以美化效果:

    Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。

    除本文内容外,你还可参考:

    分析函数参考手册:

    http://xsb.itpub.net/post/419/33028

    分析函数使用例子介绍:

    http://xsb.itpub.net/post/419/44634

    SQL> create table t as select * from dba_indexes;

    表已创建。

    SQL> select index_type, status, count(*) from t group by index_type, status;

    INDEX_TYPE STATUS COUNT(*)

    --------------------------- -------- ----------

    LOB VALID 51

    NORMAL N/A 25

    NORMAL VALID 479

    CLUSTER VALID 11

    下面来看看ROLLUP和CUBE语句的执行结果。

    SQL> select index_type, status, count(*) from t group by rollup(index_type, status);

    INDEX_TYPE STATUS COUNT(*)

    --------------------------- -------- ----------

    LOB VALID 51

    LOB 51

    NORMAL N/A 25

    NORMAL VALID 479

    NORMAL 504

    CLUSTER VALID 11

    CLUSTER 11

    566

    已选择8行。

    SQL> select index_type, status, count(*) from t group by cube(index_type, status);

    INDEX_TYPE STATUS COUNT(*)

    --------------------------- -------- ----------

    566

    N/A 25

    VALID 541

    LOB 51

    LOB VALID 51

    NORMAL 504

    NORMAL N/A 25

    NORMAL VALID 479

    CLUSTER 11

    CLUSTER VALID 11

    已选择10行。

    查询结果不是很一目了然,下面通过Oracle提供的函数GROUPING来整理一下查询结果。

    SQL> select grouping(index_type) g_ind, grouping(status) g_st, index_type, status, count(*)

    2 from t group by rollup(index_type, status) order by 1, 2;

    G_IND G_ST INDEX_TYPE STATUS COUNT(*)

    ---------- ---------- --------------------------- -------- ----------

    0 0 LOB VALID 51

    0 0 NORMAL N/A 25

    0 0 NORMAL VALID 479

    0 0 CLUSTER VALID 11

    0 1 LOB 51

    0 1 NORMAL 504

    0 1 CLUSTER 11

    1 1 566

    已选择8行。

    这个查询结果就直观多了,和不带ROLLUP语句的GROUP BY相比,ROLLUP增加了对INDEX_TYPE的GROUP BY统计和对所有记录的GROUP BY统计。

    也就是说,如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。

    下面看看CUBE语句。

    SQL> select grouping(index_type) g_ind, grouping(status) g_st, index_type, status, count(*)

    2 from t group by cube(index_type, status) order by 1, 2;

    G_IND G_ST INDEX_TYPE STATUS COUNT(*)

    ---------- ---------- --------------------------- -------- ----------

    0 0 LOB VALID 51

    0 0 NORMAL N/A 25

    0 0 NORMAL VALID 479

    0 0 CLUSTER VALID 11

    0 1 LOB 51

    0 1 NORMAL 504

    0 1 CLUSTER 11

    1 0 N/A 25

    1 0 VALID 541

    1 1 566

    已选择10行。

    和ROLLUP相比,CUBE又增加了对STATUS列的GROUP BY统计。

    如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。

    除了使用GROUPING函数,还可以使用GROUPING_ID来标识GROUP BY结果。

    SQL> select grouping_id(index_type, status) g_ind, index_type, status, count(*)

    2 from t group by rollup(index_type, status) order by 1;

    G_IND INDEX_TYPE STATUS COUNT(*)

    ---------- --------------------------- -------- ----------

    0 LOB VALID 51

    0 NORMAL N/A 25

    0 NORMAL VALID 479

    0 CLUSTER VALID 11

    1 LOB 51

    1 NORMAL 504

    1 CLUSTER 11

    3 566

    已选择8行。

    SQL> select grouping_id(index_type, status) g_ind, index_type, status, count(*)

    2 from t group by cube(index_type, status) order by 1;

    G_IND INDEX_TYPE STATUS COUNT(*)

    ---------- --------------------------- -------- ----------

    0 LOB VALID 51

    0 NORMAL N/A 25

    0 NORMAL VALID 479

    0 CLUSTER VALID 11

    1 LOB 51

    1 NORMAL 504

    1 CLUSTER 11

    2 N/A 25

    2 VALID 541

    3 566

    已选择10行。

    grouping_id()可以美化效果:

    select DECODE(GROUPING_ID(C1), 1, '合计', C1) D1,

    DECODE(GROUPING_ID(C1, C2), 1, '小计', C2) D2,

    DECODE(GROUPING_ID(C1, C2, C1 + C2), 1, '小计', C1 + C2) D3,

    count(*),

    GROUPING_ID(C1, C2, C1 + C2, C1 + 1, C2 + 1),

    GROUPING_ID(C1)

    from T2

    group by rollup(C1, C2, C1 + C2, C1 + 1, C2 + 1);

    ===========================================================

    1.

    报表合计专用的

    Rollup

    函数

    销售报表

    以往的查询

    SQL:

    Select

    area,month,sum(money) from SaleOrder group by area,month

[1] [2] [3] 

ORACLE分组统计

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Adding Users to MySQL: The Complete TutorialAdding Users to MySQL: The Complete TutorialMay 12, 2025 am 12:14 AM

Das Beherrschen der Methode zum Hinzufügen von MySQL -Benutzern ist für Datenbankadministratoren und -entwickler von entscheidender Bedeutung, da sie die Sicherheits- und Zugriffskontrolle der Datenbank gewährleistet. 1) Erstellen Sie einen neuen Benutzer, der den Befehl createUser verwendet, 2) Berechtigungen über den Zuschussbefehl zuweisen, 3) Verwenden Sie FlushPrivileges, um sicherzustellen, dass die Berechtigungen wirksam werden.

Beherrschen MySQL -Zeichenfolge Datentypen: VARCHAR v.Stext vs. charBeherrschen MySQL -Zeichenfolge Datentypen: VARCHAR v.Stext vs. charMay 12, 2025 am 12:12 AM

ChooSeCharforfixed-LengthData, varcharforvariable-LengthData, undTextForLargetEXTFields.1) Charisefficiefforconsistent-LengthDatalikeCodes.2) varcharSefficienpyficyFoximent-Länge-Länge.3) VarcharSuitsVariable-Lengthdatalikenamen, BalancingFlexibilityPerance.3) textissideale

MySQL: String -Datentypen und Indizierung: Best PracticesMySQL: String -Datentypen und Indizierung: Best PracticesMay 12, 2025 am 12:11 AM

Best Practices für die Handhabung von String -Datentypen und -indizes in MySQL gehören: 1) Auswählen des entsprechenden Zeichenfolge -Typs, z. B. Zeichen für feste Länge, Varchar für variable Länge und Text für großen Text; 2) bei der Indexierung vorsichtig sein, über die Indexierung vermeiden und Indizes für gemeinsame Abfragen erstellen; 3) Verwenden Sie Präfixindizes und Volltextindizes, um lange String-Suchvorgänge zu optimieren. 4) Überwachen und optimieren Sie die Indizes regelmäßig, um die Indizes gering und effizient zu halten. Mit diesen Methoden können wir Lese- und Schreibleistung in Einklang bringen und die Datenbankeffizienz verbessern.

MySQL: So fügen Sie einen Benutzer aus der Ferne hinzuMySQL: So fügen Sie einen Benutzer aus der Ferne hinzuMay 12, 2025 am 12:10 AM

Toaddauerremotelytomysql, folge thesesteps: 1) connectTomysqlasroot, 2) CreateeNewuserWithremoteAccess, 3) Grant -nöterPrivilegeges und 4) flushprivileges.BecauTiousousousousous-

Die ultimative Anleitung zu MySQL -String -Datentypen: Effiziente DatenspeicherungDie ultimative Anleitung zu MySQL -String -Datentypen: Effiziente DatenspeicherungMay 12, 2025 am 12:05 AM

TostorestringseffictionlyInmysql, ChoosetherightDatatypeDonyourneeds: 1) UsecharforFixed-LengthSlikeCountrycodes.2) UseVarcharforVariable-LengthStringSlikenMamen.3) useTextforlong-formtextContent.-We useblob formainbherinaryImimages

MySQL Blob vs. Text: Auswählen des richtigen Datentyps für große ObjekteMySQL Blob vs. Text: Auswählen des richtigen Datentyps für große ObjekteMay 11, 2025 am 12:13 AM

Bei der Auswahl der Blob- und Textdatentypen von MySQL eignet sich Blob für die Speicherung von Binärdaten und der Text ist zum Speichern von Textdaten geeignet. 1) Der Blob eignet sich für binäre Daten wie Bilder und Audio, 2) Text ist für Textdaten wie Artikel und Kommentare geeignet. Bei der Auswahl müssen Dateneigenschaften und Leistungsoptimierung berücksichtigt werden.

MySQL: Soll ich Root -Benutzer für mein Produkt verwenden?MySQL: Soll ich Root -Benutzer für mein Produkt verwenden?May 11, 2025 am 12:11 AM

Nein, YouShouldnotusetheroTusserinMysqlForyourProduct.instead, Createspecificusers withlimitedPrivileGeenhiteSecurity und 1) CreateOnewuserWithaStrongPassword, 2) Grantonlyn -DegetaryPothisuser, 3) regelmäßigem LyRegPassUtupdatusuSerpermings

MySQL -String -Datentypen erläutert: Wählen Sie den richtigen Typ für Ihre Daten ausMySQL -String -Datentypen erläutert: Wählen Sie den richtigen Typ für Ihre Daten ausMay 11, 2025 am 12:10 AM

MysqlstringDatatypessHouldbechosenbasedonDatacharacteristics undsecases: 1) UseCharforfixed-LengthStringslikecountrycodes.2) UseVarcharforvariable-Länge-Längestringslikenames.3) VerwendungBinaryorvarbinaryChryCryEcryEcryCryPlyptography.4) gebrauch

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft