我一直都觉得自己对sql很熟练,但是今天才发现,自己就是个渣渣。
我以前只知道group by是分组,order by是排序,但是他们的真正意义我却不懂。。
导致今天用到的时候一直报错。。浪费了一个多小时,说多了都是辛酸泪啊。那么现在就把我总结的分享记录一下,有需要的可以借鉴,欢迎帮忙改正哈。
1.group by 分组
(1)在什么场合使用?
答:必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。聚合函数是—sum()、count()、avg()等。
(2)怎样使用?
答:1/select后面如果有除了聚合函数的字段,在group by的时候除了聚合函数都要加上。
2/如果涉及到截取的字段,那么需要将所截取的那部分放在里面,而不要取别名。
例如:
sql语句:select to_date(s.start_time) as start_time,count(1) from A;
那么to_date(s.start_time) as start_time ,在group by 里面就要写to_date(s.start_time)
2.order by排序
(1)在什么场合使用?
答:需要进行排序的时候使用(默认为升序)
(2)怎样使用?
答 :1/由于默认为升序,所以想要查询倒序的时候,需要在所需要进行排序的字段后面加上desc
例如:select a.code,a.name,a.time from E order by a.code desc
2/order by可以单独使用,但是如果有group by,那么一定要在group by的后面。
3/多个字段进行排序:Gender=1 优先, 3 其次, 其他 Birth 降序
例:
select * from Students
order by (
Case Gender – set the priority: (asc - lower)
When 1 Then -1
When 3 Then 1
Else 2
End) asc, Birthday desc