Використання group by у двох полях і підрахунок у SQL


83

У моїй mysql db є таблиця, яка має два стовпці: групу та підгрупу. Дивіться нижче.

 group, subGroup
 grp-A, sub-A
 grp-A, sub-A
 grp-A, sub-B      
 grp-B, sub-A
 grp-B, sub-B
 grp-B, sub-B

Я намагаюся отримати кількість записів для кожної унікальної групи пар / підгруп.

Це я очікую:

group, subGroup, count
grp-A, sub-A, 2
grp-A, sub-B, 1
grp-B, sub-A, 1
grp-B, sub-B, 2

Прочитавши деякі дописи, я спробував декілька запитів sql за допомогою group by, count (), але мені не вдається отримати очікуваний результат. Як я можу це виправити?


1
я хотів інший випадок, підрахунок цукрових груп для кожної групи, тому це запит ВИБЕРІТЬ a, b, COUNT (
різний

Відповіді:


139

Я думаю, ви шукаєте: SELECT a, b, COUNT(a) FROM tbl GROUP BY a, b


1
Привіт Корбінб. Дуже дякую. це працює. Я зробив те, що ви пропонуєте, але наголошував на групі a, b Я зробив групу a і b. Ще раз спасибі
Марк,

3
a and bвиглядає як заява для MySQL (насправді не впевнений, чи буде це синтаксичною помилкою чи групується при поверненні 0 або 1 - я б припустив синтаксичну помилку, особливо для полів varchar). Щоб згрупувати кілька стовпців, ви просто використовуєте кому.
Корбін,

1
Дуже дякую!! .. Проблема зі мною полягала в тому, що я не зміг сформулювати своє запитання і витратив багато часу, гуглюючи, нарешті, приземлившись тут для простого і точкового рішення.
faheem farhan

Замість підрахунку мені потрібні були всі деталі запису. Наприклад, grpA має 2 підгрупи: subA та subB, тому мені потрібно отримати весь запис для кожної з підгруп. Чи може хто-небудь допомогти мені. @Corbin
адміністратор 7798

2
я хотів підрахувати цукрові групи для кожної групи, тож це запит ВИБЕРІТЬ a, b, COUNT (
різний

8
SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup

Замість підрахунку мені потрібні були всі деталі запису. Наприклад, grpA має 2 підгрупи: subA та subB, тому мені потрібно отримати весь запис для кожної з підгруп. Чи може хто-небудь допомогти мені. @ user1127214
admin 7798

7

Ви повинні згрупувати обидва стовпці, групу та підгрупу, а потім використовувати функцію агрегування COUNT().

SELECT
  group, subgroup, COUNT(*)
FROM
  groups
GROUP BY
  group, subgroup

1
Мені здається друкарською помилкою група! =
GroupName

Замість підрахунку мені потрібні були всі деталі запису. Наприклад, grpA має 2 підгрупи: subA та subB, тому мені потрібно отримати весь запис для кожної з підгруп. Чи може хто-небудь допомогти мені. @farzane
адміністратор 7798
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.