zoukankan      html  css  js  c++  java
  • SQL常见问题及解决

    1、max()函数,对于某一个认为是数值型但实际是字符型字段取最大值,采用max函数,发现结果一直有错,如9>13.

      解决方法:在max括号里面加一个0,把这个字段转化为数值型再进行比较,select max(a+0)

    2、时间处理,日期取年月日,时间戳取日期,日期格式转化等等需求,经常会出现各种问题

      解决方法:先百度下用什么用什么函数来转,在正式跑数前,直接用select函数a来测试下

      一种特殊的日期处理是北京时间和Unix时间转换,代码如下:

      select from_unixtime(time),select from_unixtime(cast(substr(time,1,10)as int))

    3、先聚合再计数,如果要计算某个维度下的用户数,不要直接算用户数count(distinct imei),而应该是如下代码:

      select city,count(1) as uv from (select city,imei,count(1) from a group by city,imei)t1 group by city

    4、一列变多行,ab测试中会对一个用户打很多标签,而这些标签都是存在一个字段中,所以要看维度指标,要对该字段进行列变行拆解,代码如下:

      select *,b from t1 Lateral view explode(a) table as b

    5、取top,要看某分类下的top10消费额子分类(金额一致就并列),代码如下:

      select *,rank()over(partition by a order by b desc) as rank from table t1

    6、避免数据倾斜,小表在左,大表在右,使用map join,同时对空值进行过滤,代码如下:

      select /*+mapjoin(a)*/ t1.city,t2.type,count(t1.imei) as uv 

      from 

      (select city,imei,count(1) as pv  from a where imei !='' group by city,imei)t1

      join 

      (select type,imei,count(1) as pv  from a where imei !='' group by city,imei)t2

      on t1.imei=t2.imei

      group by t1.city,t2.type

  • 相关阅读:
    【Swift后台】环境安装
    【Swift后台】背景介绍
    【Swift后台】目录
    退居三线iOS开发的自主开发历程
    Swift调用微信支付宝SDK(Swift4.0)
    ORACLE取对照表不等的数据
    Binary转换成Hex字符串
    利用OpenSSL创建证书链并应用于IIS7
    sysctl.conf和limit.conf备忘待查
    Use Wireshark to capture loopback traffic without a loopback adapter (转)
  • 原文地址:https://www.cnblogs.com/xiao02fang/p/13194877.html
Copyright © 2011-2022 走看看