问:我可不可以使用如下查询语句把两列的最大值中取得最大值: max( max(col1) from table1), max(col2) from table2) ) as col3 如果可以,在max的地方应该使用什么命令? 答:这个问题的答案是使用GREATEST函数。但是,我们必须先对你的表达式作出一些小小的改动,这样查询才能有效。 select greatest( ( select max(col1)&n……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
问:我可不可以使用如下查询语句把两列的最大值中取得最大值:
max( max(col1) from table1), max(col2) from table2) ) as col3 |
如果可以,在max的地方应该使用什么命令?
答:这个问题的答案是使用GREATEST函数。但是,我们必须先对你的表达式作出一些小小的改动,这样查询才能有效。
select greatest( ( select max(col1) from table1 ) , ( select max(col2) from table2 ) ) as col3 |
在这个表达式中每个子查询能产生一个值,然后GREATEST函数——作为一个纯量函数,跟MAX相反,属于聚合函数——会选择子查询产生的值中的最高值。
如果你的数据库系统不支持标准SQL GREATEST函数,可以使用这样的表达式:
select case when max1 > max2 then max1 else max2 end as col3 from ( select max(col1) as max1 from table1 ) as t1 cross join ( select max(col2) as max2 from table2 ) as t2 |
为什么要使用交叉联接(cross join)?因为每一个派生表(t1和t2)只返回一行,所以交叉联接只产生一行和两列,max1和max2。
注意GREATEST函数可以运用于多个值。而有多于两个值的时候使用CASE函数就变得复杂和麻烦。
相关推荐
-
Azure数据湖分析从U-SQL中获得提升
大数据的发展已经让许多精通SQL的数据专业人员不知所措。微软的U-SQL编程语言试图让这些人回归数据查询游戏。
-
TT百科:SQL(结构化查询语言)
一般来说,SQL-on-Hadoop仍是一项新兴技术,但随着各个公司寻求获得拥有大数据应用程序编程SQL技能的开发和分析人员,它们正逐渐成为Hadoop部署的固定组件。
-
SQL和NoSQL数据库设计之争
企业收集了很多大规模增长的松散结构化数据,Hadoop,Spark以及其他新技术处理这些数据非常有助于改善商业智能分析效率。
-
如何通过格式良好的SQL提高效率和准确性
格式良好的SQL并不会比乱七八糟的SQL运行效果更好。数据库其实不怎么关心SQL语句中你把逗号放到了字段名的前面还是后面。