`
尚将军
  • 浏览: 34444 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

sql多表计算问题

 
阅读更多
mc_devappear表中的数据可以计算出当天新增的设备数,launch2表中存储的数据可以计算出当天启动的所有设备数。用一句sql计算出二者比例(新增设备数/所有设备数)

【1】第一版
with temp as(
	select  count(distinct deviceid)  as newdevnum from ana_fx_middle.mc_devappear  where first_appear_hdfspar ='20161214' and hdfs_par='20161214'
	full join
	select count(distinct deviceid) as devicenum from src_huidu_mc.launch2 where hdfs_par ='20161214'
	)
select newdevnum/devicenum from temp


缺陷:
AnalysisException: Syntax error in line 3: full join ^ Encountered: FULL Expected: AND, BETWEEN, DIV, GROUP, HAVING, ILIKE, IN, IREGEXP, IS, LIKE, LIMIT, NOT, OFFSET, OR, ORDER, REGEXP, RLIKE, UNION CAUSED BY: Exception: Syntax error

【2】第二版
with temp as(  
	select * from 
		(select '1' as id,  count(distinct deviceid)  as newdevnum from ana_fx_middle.mc_devappear  where first_appear_hdfspar ='20161214' and hdfs_par='20161214') as tmp1
		left join
		(select '1' as id,count(distinct deviceid) as devicenum from src_huidu_mc.launch2 where hdfs_par ='20161214' ) as tmp2
	  on tmp1.id=tmp2.id
  )
  select newdevnum/devicenum from temp  


缺陷:devicenum为0的时候无法计算
【3】第三版
with temp as(  
	select * from 
		(select '1' as id,  count(distinct deviceid)  as newdevnum from ana_fx_middle.mc_devappear  where first_appear_hdfspar ='20161214' and hdfs_par='20161214') as tmp1
		left join
		(select '1' as id,count(distinct deviceid) as devicenum from src_huidu_mc.launch2 where hdfs_par ='20161214' ) as tmp2
	  on tmp1.id=tmp2.id
  )
  select (cast(newdevnum as bigint))/(if cast(devicenum as bigint)=0,1,cast(devicenum as bigint)) from temp  
分享到:
评论

相关推荐

    计算sqlserver表数据大小

    计算sqlserver当前数据库中所有表占用空间大小,包括记录总数,磁盘字节数

    Sql经纬度计算与C#经纬度计算

    Sql经纬度计算与C#经纬度计算 Sql经纬度计算是指使用SQL语言来计算两个经纬度之间的距离,而C#经纬度计算则是使用C#语言来实现同样的功能。以下是对Sql经纬度计算和C#经纬度计算的详细介绍: Sql经纬度计算: 在...

    SQLServer 根据生日计算年龄

    SQLServer 根据生日计算年龄

    SQLServer语句计算实足年龄.txt

    根据 “出生日期” 使用 SQL 语句计算实足年龄。

    浅谈Linq to sql 的多表关联与动态条件查询

    浅谈Linq to sql 的多表关联与动态条件查询 Linq to sql 是一种强大的数据查询语言,它可以帮助开发者快速、高效地访问和操作数据库数据。在本文中,我们将讨论 Linq to sql 的多表关联和动态条件查询这两个重要的...

    大数据实时计算Flink SQL解密

    ### 大数据实时计算Flink SQL解密 #### 背景 在2018年的第九届中国数据库技术大会上,来自阿里巴巴集团的伍翀(花名:云邪)进行了主题为“大数据实时计算Flink SQL解密”的分享。伍翀拥有北京理工大学硕士学位,并...

    用SQL计算多次多人开工的工时分摊sql

    根据给定的标题、描述及部分SQL代码内容,本文将详细介绍如何使用SQL处理多人多次开工情况下工时分摊的问题,并探讨其应用场景与实现原理。 ### 一、问题背景 在某些生产环境中,可能存在多名员工在同一时间段内在...

    面向Flink的多表连接计算性能优化算法

    该算法的提出是为了解决直接将现有的多表连接优化算法应用到Flink上所带来的两个问题:一是现有算法不能充分发挥Flink基于线程的轻量级计算模型的性能优势;二是连接算法需要shuffle的数据量过大。 为解决这两个...

    SQLSERVER计算年龄(岁月天).txt

    SQLSERVER计算年龄(岁月天),可以精确到岁,月,几月几天。

    sqlserver根据经纬度计算两点间距离

    sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离

    SQL Server各种日期计算方法

    ### SQL Server中的日期计算方法详解 在SQL Server中进行日期计算是数据库操作中常见的需求之一。本文将深入探讨SQL ...熟练掌握这两个函数的使用方法,能够大大提高开发效率,解决实际业务场景中的日期计算问题。

    SQL SERVER定时自动计算小时平均值.docx

    一旦作业创建并启用,SQL Server代理将按照设定的计划自动执行查询,计算并更新`HOUR_AVG`表中的数据。 请注意,这个方案可以根据实际需求进行调整。例如,如果你想计算其他时间段的平均值,只需更改`DATEDIFF`中的...

    SQL Server各种日期计算

    在探讨SQL Server中进行日期计算的方法之前,我们必须了解SQL Server中处理日期和时间的基本函数:DATEDIFF和DATEADD。这两个函数在实际应用中非常常用,可以帮助我们得到两个日期间的时间间隔以及通过已知时间间隔...

    SQL工作日计算,只排除周末

    ### SQL工作日计算,只排除周末 在数据库管理和数据分析领域,准确地计算两个日期之间的有效工作日数量是一项非常实用的功能,特别是在需要排除周末(通常指周六和周日)的情况下。这种计算方法对于财务报告、项目...

    sql语句 根据身份证号计算年龄

    sql 语句 根据身份证号计算年龄,oracl数据库可以直接运行

    sql用函数计算年龄

    在sqlserver中采用存储过程或函数计算年龄/周岁

    计算机等级考试SQL练习题

    - 问题2和5涉及到多表查询和ALTER TABLE语句,正确答案是D和B,WHERE子句用于指定条件,ALTER TABLE用于添加字段。 - 问题3和6考查子查询和更新操作,EXISTS子句用于检查子查询是否返回行,UPDATE语句用于更新表中...

    sql多表关联查询语法详解

    在SQL(Structured Query Language)中,多表关联查询是数据操作的核心部分,它允许我们从多个相关表中获取数据。本篇文章将详细讲解SQL中的左外连接、右外连接以及嵌套查询,帮助你深入理解这些重要概念。 一、左...

    SQL日期计算包括时间差

    SQL 日期计算包括时间差 SQL Server 中的日期计算是非常重要的,许多业务需求都需要计算日期之间的差值。本文将详细介绍如何使用 DATEADD 和 DATEDIFF 函数来计算日期,包括计算本月的第一天、本月的最后一天、本...

Global site tag (gtag.js) - Google Analytics