A bare aggregate collapses an entire table into a single number, but usually you want one number per category: total runs per team, average score per venue, matches played per player. GROUP BY is the clause that splits rows into groups by shared column values, then runs the aggregate once for each group, producing a tidy summary table rather than a single grand total.
This is the leap from "what is the total" to "what is the total for each". Without GROUP BY you would run a separate filtered query for every team by hand, which is tedious and does not scale. GROUP BY lets the engine partition the data and compute every group's summary in one pass, returning a row per group in a single, efficient statement.
GROUP BY is the analytical backbone of SQL, the mechanism behind virtually every chart, pivot, and breakdown report you will ever build. Understanding precisely which columns may appear in the SELECT, and how grouping interacts with filtering and ordering, transforms aggregates from blunt single-number tools into a flexible engine for slicing data along any dimension you choose.