sql记录

--时间显示函数
CREATE OR REPLACE FUNCTION MakeDateByMinute(minutes int)
RETURN varchar2
AS
day int;
hour int;
minute int;
BEGIN
day := Floor(minutes / 1440);
hour := Floor( ( minutes - (day * 1440) )/ 60 );
minute := Floor( minutes - day * 1440 - hour * 60 );
if minutes>0 then
RETURN to_char(day)|| '天'
||to_char(hour) || '小时'
||to_char(minute) ||'分钟';
else
return '小于1分钟';
end if;
END;


--租还车表 统计租车还车成一条记录sql
create or replace view bike_borrow_and_return_view as
select b.b_website_name,r.r_website_name,b.b_tenancy_date,r.r_tenancy_date,MakeDateByMinute(ROUND(TO_NUMBER(r.r_tenancy_date - b.b_tenancy_date) * 24*60)) date_discrepancy,b.bike_no,b.name,b.website_id,r.website_id r_website_id,decode(r.tenancy_price,null,'0.00',r.tenancy_price) tenancy_price from
(select ROW_NUMBER() OVER(PARTITION BY f.bike_rfid ORDER BY f.tenancy_date) as XH,s.website_name b_website_name,f.tenancy_date b_tenancy_date,t.bike_no,t.bike_rfid,c.name,s.website_id from fz_t_ref_card f
left join sm_t_website s on s.website_id=f.tenancy_website_id left join fz_t_bike_info t on t.bike_rfid=f.bike_rfid left join fz_t_associator c on c.card_id =f.card_id where f.ref_type=0
)b left join
(select ROW_NUMBER() OVER(PARTITION BY f.bike_rfid ORDER BY f.tenancy_date) as XH,s.website_name r_website_name,f.tenancy_date r_tenancy_date,f.bike_rfid,f.card_id,s.website_id,ltrim(to_char(f.tenancy_price / 100, '99999999990.99')) tenancy_price from fz_t_ref_card f
left join sm_t_website s on s.website_id=f.tenancy_website_id where f.ref_type=1
) r on b.XH=r.XH and b.bike_rfid=r.bike_rfid;

--网点流量统计sql

select t.b_website_name,
t.r_website_name,
count(*) bike_num,
t.b_pile,
decode(t.b_pile,0,'0%',round(count(*)/ t.b_pile, 4) * 100 || '%') b_v,
t.r_pile,
decode(t.r_pile,0,'0%',round(count(*) / t.r_pile, 4) * 100 || '%') r_v
from (select row_number() OVER(partition by bba.b_website_name order by bba.b_website_name) val,
bba.b_website_name,
bba.r_website_name,
bba.b_tenancy_date,
bba.r_tenancy_date,
(select count(m.bikepile_id)
from fz_t_bikepile_manager m
where m.website_id = bba.website_id) b_pile,
(select count(m.bikepile_id)
from fz_t_bikepile_manager m
where m.website_id = bba.r_website_id) r_pile
from bike_borrow_and_return_view bba
) t where 1=1
and to_char(t.b_tenancy_date, 'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd') and to_char(t.r_tenancy_date, 'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd')
group by b_website_name,r_website_name,t.b_pile,t.r_pile

--站点借还车率统计sql

select t.website_name,t.website_no,t.b_bike_num,t.r_bike_num,
decode(t.pile,0,'0%',round(t.b_bike_num/t.pile,4)*100 ||'%') b_bikerate,
decode(t.pile,0,'0%',round(t.r_bike_num/t.pile,4)*100 ||'%') r_bikerate,
t.b_bike_whenlong from(select tw.website_name,tw.website_no,
count(bb.website_id) b_bike_num,count(bb.r_website_id) r_bike_num,
(select count(m.bikepile_id) from fz_t_bikepile_manager m
where m.website_id = bb.website_id) pile,
MakeDateByMinute(sum(ROUND(TO_NUMBER(bb.r_tenancy_date -
bb.b_tenancy_date) * 24 * 60))) b_bike_whenlong
from bike_borrow_and_return_view bb
left join sm_t_website tw on bb.website_id = tw.website_id
--where ('#' is null or tw.area_id in (@))
group by tw.website_name,tw.website_no,bb.website_id ) t order by t.website_no
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值