Why do we use Group by 1 and Group by 1,2,3 in SQL query?
This is actually a really bad thing to do IMHO, and it's not supported in most other database platforms.

The reasons people do it:


they're lazy - I don't know why people think their productivity is improved by writing terse code rather than typing for an extra 40 milliseconds to get much more literal code.


The reasons it's bad:


it's not self-documenting - someone is going to have to go parse the SELECT list to figure out the grouping. It would actually be a little more clear in SQL Server, which doesn't support cowboy who-knows-what-will-happen grouping like MySQL does.
it's brittle - someone comes in and changes the SELECT list because the business users wanted a different report output, and now your output is a mess. If you had used column names in the GROUP BY, order in the SELECT list would be irrelevant.


SQL Server supports ORDER BY [ordinal]; here are some parallel arguments against its use:


https://sqlblog.org/2009/10/06/bad-habits-to-kick-order-by-ordinal