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

两表相连 然后用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日

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站