Loading...

Топтоо

GROUP BY жана HAVING операторлору маалыматтарды топтоого мүмкүндүк берет. Алар SELECT буйругунун ичинде колдонулат:

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ТАНДОО мамычалар</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
FROM стол</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
[WHERE сап_фильтрлөө шарты]</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
[мамычалардан_топко_топко]</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
[Топтун_фильтрлөө_шарты бар]</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
[Иртиптештирүү үчүн мамычалар_БӨЛҮШҮ]</font></font><font></font>@A@

GROUP BY

GROUP BY пункту саптар кантип топтолорун аныктайт.

Мисалы, продукцияларды өндүрүүчүсү боюнча топтоп көрөлү

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Өндүрүүчүнү тандаңыз, COUNT(*) AS ModelsCount</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
FROM Products</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
Өндүрүүчү боюнча ГРУППА</font></font><font></font>@A@

SELECT операторундагы биринчи тилке - Өндүрүүчү топтун атын билдирет, ал эми экинчи тилке - ModelsCount Count функциясынын натыйжасын көрсөтөт, ал топтогу саптардын санын эсептейт.

MySQLде топтоштуруу жана GROUP BY

Ал эми SELECT билдирүүсү бир же бир нече тилкеде тандалып, ошондой эле жалпы функцияларды колдонсо, анда GROUP BY пунктун колдонушуңуз керек. Ошентип, төмөнкү мисал иштебейт, анткени ал топтоо туюнтмасын камтыбайт:

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Өндүрүүчүнү тандаңыз, COUNT(*) AS ModelsCount</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
FROM Products</font></font><font></font>@A@

Оператор GROUP BYбир нече тилке боюнча топтой алат. Ошентип, келгиле, өнүмдөрдүн саны боюнча топтоону кошолу:

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Өндүрүүчүнү, ПродуктСаны, COUNT(*) МодельдерСаны катары ТАНДОО</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
FROM Products</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
Өндүрүүчү, Продукциянын саны боюнча ТОПТОРУ</font></font><font></font>@A@

Сураныч, туюнтма туюнтмадан кийин , бирок туюнтмадан мурун GROUP BYкелиши керек экенин эске алыңыз :WHEREORDER BY

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Өндүрүүчүнү тандаңыз, COUNT(*) AS ModelsCount</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
FROM Products</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
КАЙДА Баасы > 30000</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
Өндүрүүчү боюнча ГРУППА</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ModelsCount DESC БЕРҮҮ</font></font><font></font>@A@

MySQLде GROUP BY

Топтук чыпкалоо. БАР

HAVING оператору топторду чыпкалоого мүмкүндүк берет, б.а., ал чыгаруу жыйынтыгына кайсы топтор кирерин аныктайт.

HAVING колдонуу WHERE колдонуу менен бирдей. Катарларды чыпкалоо үчүн WHERE колдонулса, анда HAVING топторду чыпкалоо үчүн колдонулат.

Мисалы, 1ден ашык модели аныкталган өндүрүүчүлөр боюнча бардык продукт топторун табалы:

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Өндүрүүчүнү тандаңыз, COUNT(*) AS ModelsCount</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
FROM Products</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
Өндүрүүчү боюнча ГРУППА</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
САНАЛУУ (*) > 1</font></font><font></font>@A@

MySQLде HAVING билдирүүсү

Сиз ошондой эле WHERE жана HAVING сүйлөмдөрүн бир буйрукка айкалыштыра аласыз:

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Өндүрүүчүнү тандаңыз, COUNT(*) AS ModelsCount</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
FROM Products</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
КАЙДА Баасы * Продукциянын саны > 80000</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
Өндүрүүчү боюнча ГРУППА</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
HAVING COUNT(*) > 1;</font></font><font></font>@A@

Башкача айтканда, бул учурда катарлар адегенде чыпкаланат: жалпы баасы 80 000ден ашкан продукциялар тандалып алынат.Андан кийин тандалган продуктылар өндүрүүчү боюнча топтолот. Анан топтордун өздөрү чыпкаланат - 1ден ашык моделди камтыган топтор тандалат.

Эгерде сорттоо зарыл болсо, анда ORDER BY туюнтмасы HAVING туюнтмасынан кийин келет:

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Өндүрүүчүнү ТАҢДАҢЫЗ, COUNT(*) моделдер, SUM(ProductCount) AS бирдиктери</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
FROM Products</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
КАЙДА Баасы * Продукциянын саны > 80000</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
Өндүрүүчү боюнча ГРУППА</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
СУММУНА БАР (Өнүмдүн саны) > 2</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ORDER BY BY Units DESC;</font></font><font></font>@A@

Бул жерде топтоо өндүрүүчү боюнча болуп саналат, ошондой эле ар бир өндүрүүчү үчүн моделдердин саны (Модельдер) жана бардык ушул моделдер үчүн бардык буюмдардын жалпы саны (Бирдик) да тандалган. Аягында топтор өнүмдөрдүн саны боюнча азаюу тартибинде иргелет.

MySQLде чыпкалоо жана сорттоо менен