在数据库查询的操作中,常常会见到,让纵向排列的数据变成横向排,这其中涉及到的知识点有聚合函数,分组及if函数等等.
大致思路可以分为:根据题目意思,先选择合适的列名进行分组;使用聚合函数来控制列数;if函数来控制条件,if(条件,条件为真的返回值,条件为假的返回值).
表内容:
2022-05-09 胜
2022-05-09 胜
2022-05-09 负
2022-05-09 负
2022-05-10 胜
2022-05-10 负
2022-05-10 负
如果要生成下列结果, 该如何写sql 语句?
日期 胜 负
2005-22-09 2 2
2005-22-10 1 2
这道题就是统计在哪一天,胜了多少局,败了多少局,让日期作为分组条件,接着判断,如果结果
为”胜”,sum加1,同理,负
也一样.
year
month
amount
2020
1.1
2020
1.2
2020
1.3
2020
1.1
2021
1.2
2021
1.3
2021
1.5
2021
1.2
查询结果如下
year
2020
1.1
1.2
1.3
1.1
2021
1.2
1.3
1.5
1.2
请编写一条SQL语句实现上图的效果
可以看到,结果的第一行是别名,别名的语法: 列名 别名;或者 列名 AS 别名;
这道题是分别找出对应年份,对应月份的amount值,进行横排
表形式如下: (7)
Year Salary
2018 1000
2019 2000
2020 3000
2021 4000
想得到如下形式的查询结果
Year Salary
2018 1000
2019 3000
2020 6000
2021 10000
这道题的规律是,比之年份小的,Salary全部加起来.用到的是自连接,一张表控制对应的Salary,另一张表找到年份比它大的 Salary值,然后求和.
1.if()函数与ifnull()的区别,if()函数是用来做判断的,其语法有点类似三目运算;
ifnull()函数是判断那一列如果有null值的话,就让那个null变为0,因为null参加计算结果都为空.
2.使用聚合函数相当于在表中加多一列,聚合函数有求AVG(),MAX(),MIN(),COUNT(),SUM().
3.聚合函数使用分组,表示对分组后的数据的统计;不使用分组,表示对整张表的统计.
Original: https://www.cnblogs.com/pilpill/p/16667495.html
Author: Tmillion
Title: 使用查询让表格纵排变横排
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/587034/
转载文章受原作者版权保护。转载请注明原作者出处!