常用SQL命令

创建一个表用来演示,数据如下

select * from xiaowei;

常用SQL命令_第1张图片

--age的最大值,最小值
select MAX(age),MIN(age) from xiaowei;

常用SQL命令_第2张图片

--对表行数计数,对age计数(不包括null)
select count(*),count(age) from xiaowei;

常用SQL命令_第3张图片
--计算age的平均值(不包括null),age求和
select AVG(age),SUM(age) from xiaowei;

常用SQL命令_第4张图片

--此句的意思是将age值为null替换为0,0可以与其他int值一起计算平均值。因为有两个null被替换为0参与了平均值的计算,所以这里计算的平均值就跟之前不一样了
--mysql可以用isnull函数,pgsql只支持COALESCE;
select avg(isnull(age,0)) from xiaowei;
select avg(COALESCE(age,0)) from xiaowei;

常用SQL命令_第5张图片

--此句的意思是用age进行分组,展示对应的name,MySQL使用group_concat,pgsql不支持group_concat,可以用array_agg,返回的name是一个数组
select age,group_concat(name) from xiaowei group by age;
select age,array_agg(name) from xiaowei group by age ;

常用SQL命令_第6张图片
--给分组的内容加一个查询条件
select age,array_agg(name) from xiaowei where age = '15' group by age ;

常用SQL命令_第7张图片
--对name排序,并转为string,中间用空格分隔
select age,array_to_string(array_agg(name order by name), ' ') from xiaowei group by age;

常用SQL命令_第8张图片

数据库左连接

--SELECT column1, column2
--FROM table1
--LEFT JOIN table2
--ON condition1
--WHERE additional_conditions;
--------举例如下:
--------查询左表(t_er_checkingpayentry)中的内容,条件是左右表的fid相等,右表(t_er_checkingpay)查询条件右表的fbillno= 'SLFK-231029-04115'
select * FROM t_er_checkingpayentry left join  t_er_checkingpay on t_er_checkingpay.fid = t_er_checkingpayentry.fid where  t_er_checkingpay.fbillno = 'SLFK-231029-04115';

--------查询左表(T_ER_ReqBill.fbillno)中的内容,条件是左右表的fid相等,右表(T_ER_ReqTripEntry)查询条件左表的FToPlaceID = '1362'
select T_ER_ReqBill.fbillno FROM T_ER_ReqBill left join  T_ER_ReqTripEntry on T_ER_ReqTripEntry.fid = T_ER_ReqBill.fid where  T_ER_ReqTripEntry.FToPlaceID = '1362';

你可能感兴趣的:(sql,数据库)