sql中orderby应该加在哪里(sql中groupby1)
sql中orderby应该加在哪里(sql中groupby1)不妨在自己有空的时候在工具上实践下,验证下真伪。“纸上得来终觉浅,绝知此事要躬行。”强调了做学问的功夫要下在哪里的重要性。group by, order by 后面跟数字,指的是 select 后面选择的列(属性),1 代表第一个列(属性),依次类推。这样一来,上面的SQL 等价于select id user_name from tb_user group by id user_name order by id user_name值得注意的是 这个索引是从1开始,而不是从0开始。这种操作也可以应用到order by子句。
在学习mysql 数据库时,看到 group by语句写的是
group by 1, 2
例如下面这条sql
select
id
user_name
from tb_user
group by 1 2
order by 1 2
其中对于group by 1 2 和 order by 1, 2 我不明白这是什么意思。
查了下资料,才知道1,2相当于第一列,第二列。
group by, order by 后面跟数字,指的是 select 后面选择的列(属性),1 代表第一个列(属性),依次类推。
这样一来,上面的SQL 等价于
select
id
user_name
from tb_user
group by id user_name
order by id user_name
值得注意的是 这个索引是从1开始,而不是从0开始。这种操作也可以应用到order by子句。
“纸上得来终觉浅,绝知此事要躬行。”强调了做学问的功夫要下在哪里的重要性。
不妨在自己有空的时候在工具上实践下,验证下真伪。
知道了group by1 2 是什么后,我们再来深入了解下group by 、 having的 用法的用法。
关键字group by 、 having的 用法group by 顾名思义 group 表示分组,by 后面写字段名,就表示根据哪个字段进行分组。
需要注意的是 group by必须得配合聚合函数来用,分组之后你可以计数(count),求和(sum),求平均数(avg)等。
常见的聚合函数有
- count() 计数
- sum() 求和
- avg() 平均数
- max() 最大值
- min() 最小值
语法:
select
column_name
aggregate_function(column_name)
from table_name
where column_name operator value
group by column_name;
提到group by 也该到having 出场了,having 相当于条件筛选,但它与where筛选不同,having 是对于group by 对象进行筛选。
举个例子:
如果我们想要进一步知道每台设备,访问页面路径超过100的设备是哪些,这个时候就可以用having了。
select
distinctId
count(distinctId)
from table_name
group by distinctId
having(count(distinctId))>100
在学习时,建议结合实践来看,不能纸上谈兵,要“亲身躬行”,学习起来效率会高些。
总结:
- group by 1 2 ,select 后面选择的列(属性),1 代表第一个列(属性),依次类推
- having基本用法 having 相当于条件筛选,但它与where筛选不同,having 是对于group by 对象进行筛选。
往期推荐
面试官:mysql自增长id用完了怎么办?
面试官:left join和left outer join 有什么区别?
面试官:mysql中count(*)和count(1)哪个效率高?