Использование группировки по нескольким столбцам

$string = "";
while ($row = mysql_fetch_array($result)) {
  $string .= $name . ', ';
}
echo substr($string, 0, strlen($string) - 2);
923
задан DineshDB 26 March 2018 в 09:47
поделиться

1 ответ

Group By X означает, что помещает всех с одинаковым значением X в одну группу .

Группировать по X, Y означает поместить всех с одинаковыми значениями для X и Y в одну группу .

Чтобы проиллюстрировать пример, допустим, у нас есть следующая таблица, касающаяся того, кто посещает какой предмет в университете:

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

Когда вы используете группу по только в столбце предмета; скажем:

select Subject, Count(*)
from Subject_Selection
group by Subject

Вы получите что-то вроде:

Subject    Count
------------------------------
ITB001     5
MKB114     2

... потому что есть 5 записей для ITB001 и 2 для MKB114

Если бы мы сгруппировали по двум столбцам:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

мы получили бы следующее:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

Это потому, что, когда мы группируем по двум столбцам, он говорит «Сгруппируйте их так, чтобы все те, у кого одинаковый предмет и семестр находились в одной группе, а затем вычислите все агрегатные функции (Счетчик, Сумма, Среднее и т. д.) для каждой из этих групп ». В этом примере это демонстрируется тем фактом, что, если мы посчитаем их, есть три человек, которые делают ITB001 в семестре 1, и двое делают это во втором семестре. люди, занимающиеся MKB114, находятся в семестре 1, поэтому нет строки для семестра 2 (данные не попадают в группу «MKB114, Semester 2»)

Надеюсь, это имеет смысл.

1930
ответ дан 19 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: