--时间显示函数
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
分享到:
相关推荐
Sql记录集生成脚本工具是一种实用程序,专为数据库管理员和开发人员设计,它能够方便地将数据库中的记录集转换为SQL脚本。这个工具的主要功能是将表的数据转化为一系列的INSERT语句,使得用户可以轻松地备份数据,...
pdox, 有用的查询生成器,PHP的PDO类 对SQL记录的简单访问 PDOx _____ _____ ____ | __ | __/__ | |__) | | | | | | |_ __ | ___/| | | | | |// | | | |__| | |__| |&
oracle笔记pl_sql基本语法记录类型01,有具体的代码案例!
BoneCP 数据源和 Hibernate 的 show sql 都是用来调试和监控数据库操作的工具,但在这篇文章中,我们将探讨为什么 BoneCP 在记录 SQL 方面可能比 Hibernate 的 show sql 更具优势。 首先,让我们了解 BoneCP 和 ...
**二、PL/SQL记录和表** 1. **记录(Record)**:PL/SQL允许我们定义自定义的数据结构,称为记录,可以包含多个字段。记录常用于在程序中模拟数据库表格的行,便于数据处理和操作。 2. **表(Table)**:PL/SQL中的...
- 动态SQL可以将结果集映射到PL/SQL记录类型,这使得可以方便地处理多列结果。例如,可以创建一个记录类型来匹配表格的列,然后使用INTO子句将查询结果直接赋值给记录变量。 4. **动态调用存储过程或函数**: - ...
SQL查找某记录的前后N条数据 SQL查找某记录的前后N条记录
根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在SQL Server环境中查询特定时间段内的记录,尤其是本月、本周、本季度以及本年的记录。以下是对这些知识点的详细阐述: ### 一、...
为了有效地管理和解决这个问题,我们可以利用Mybatis的拦截器机制来自动检测并记录慢SQL。下面我们将详细介绍如何通过Mybatis拦截器实现这一功能。 首先,了解Mybatis拦截器的基本概念。Mybatis拦截器(Interceptor...
在“基于SQL server 2008数据库的ifix操作记录教程.docx”文档中,你将找到详细的操作步骤,涵盖了如何设置ifix与SQL Server的连接,如何配置ifix以记录其对数据库的每一次操作,以及如何确保这些记录的完整性。...
例如,Area变量的值将决定SQL记录中的哪个区域字符串值。 2. HMI程序设置 使用FT View SE v7.0设计HMI程序,HMI主要任务是从PLC读取数据并执行VBA脚本,将数据写入SQL数据库。首先在SQL Server Management Studio...
### PL/SQL 复合数据结构详解:记录与集合 #### 一、概述 PL/SQL(Procedural Language for SQL)是Oracle数据库提供的一种强大的编程语言,它扩展了SQL的功能,支持复杂的业务逻辑实现。在PL/SQL中,复合数据结构...
### SQL查询重复记录方法大全 在数据库管理与维护过程中,查询和处理重复记录是一项非常重要的工作。本文将详细介绍几种常见的SQL查询重复记录的方法,并提供具体的示例代码。 #### 方法一:查询具有重复值的记录...
组态王报警记录存储到SQL数据库中 组态王是一种流行的工业自动化软件,广泛应用于制造业、能源、交通等领域。该软件可以实现实时数据采集、监控和控制,提高生产效率和产品质量。但是,组态王的报警记录功能缺乏...
二、SQL记录数统计 统计SQL表中的记录数,可以使用SQL的`COUNT(*)`函数。在C#中,我们可以通过SqlCommand对象执行SQL查询并获取结果。以下是一个示例: ```csharp string query = "SELECT COUNT(*) FROM TableName...
PL/SQL 记录类型类似于 C 语言中的结构,是一种复合类型,是用户自定义的。记录提供了一种处理独立的但又作为一个整体单元相关的变量的机制。 例如: ```sql DECLARE v_StudentID NUMBER(5); v_FirstName VARCHAR...
SQL 语句查询本周记录、本月记录、本季度记录、本年记录是数据库查询中常见的操作。本文将为您提供 MySQL 和 SQL Server 两种数据库管理系统的查询语句,帮助您快速实现这些查询操作。 查询本周记录 MySQL 中,您...
本文将深入探讨如何使用SQL语句来删除最老的记录以及如何根据特定条件进行记录删除,我们将详细解析三种不同的方法,并通过实际代码示例来加深理解。 ### 方法一:使用子查询删除最老记录 第一种方法是利用子查询...
"导出SQL数据库记录"这一主题涉及到SQL Server 2000、2005和2008三个版本,这些都是微软提供的关系型数据库管理系统,广泛应用于企业级的数据存储和处理。以下是对这个主题的详细解释: 1. **SQL Server数据库导出*...
北大青鸟sql1.增加学生记录.sql 北大青鸟sql1.增加学生记录.sql 北大青鸟sql1.增加学生记录.sql 北大青鸟sql1.增加学生记录.sql