weixin_45640142 2020-11-28 21:08 采纳率: 78.9%
浏览 251
已结题

两表相连 然后用where count出的俩个数怎么相除 为啥我写出来的sql求出来的答案是1.0

select count(order_zt) from qzy_order left join qzy_visitor on qzy_order.phon_number=qzy_visitor.phon_number where order_zt="支付成功";


select count(fwsj) from qzy_order left join qzy_visitor on qzy_order.phon_number=qzy_visitor.phon_number where fwsj="chargeRequest";


select ROUND(count(order_zt)/count(fwsj),2)from qzy_order left join qzy_visitor on qzy_order.phon_number=qzy_visitor.phon_number where (order_zt="支付成功" and  fwsj="chargeRequest");

下面是表 其实可以不用看的

create table qzy_visitor(
visitor_IP string,
visitor_time bigint,
visitor_twotime bigint,
use_id int,
phon_number string,
book_id int,
fwlj string,
fwsj string,
channel string,
price float
)
row format delimited fields terminated by ','
tblproperties("skip.header.line.count"="1");
load data local inpath '/opt/电商指标/访客表.csv' overwrite into table qzy_visitor;

create table qzy_order(
order_id bigint,
order_timme bigint,
buy_id int,
book_id int,
buy_ip string,
show_address string,
phon_number string,
channel string,
cprice float,
jy_time bigint,
order_zt string
)
row format delimited fields terminated by ','
tblproperties("skip.header.line.count"="1");
load data local inpath '/opt/电商指标/订单表.csv' overwrite into table qzy_order;

  • 写回答

9条回答 默认 最新

  • 愤世嫉俗的胖子 2020-11-30 08:57
    关注

    count(col) 之后是整数,sql 中整数相除会截断(sql server 中),mysql 和 Oracle 中会自动变换成小数。

    所以需要显式把其中一个转换成小数。

    ROUND(count(order_zt) / cast(count(fwsj) as float), 2)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 7月11日
  • 已采纳回答 7月3日

悬赏问题

  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!