sugeonyen-金仓数据库

某小区使用智慧车辆管理系统对小区的停车场进行管理,该系统记录了本小区车辆进出停车场的相关数据。这些停车场数据保存在“/opt/exam/project/smart_parking/data/parking_info.csv”中,parking_info.csv的部分数据如下所示:
在这里插入图片描述
字段说明如下:

请添加图片描述

特别提示:一辆车可能多次进出停车场。

举例说明1:

请添加图片描述

以上数据含义:车牌号为新GZ0N91的车辆于2018-01-01 00:22:59进入停车场,于2018-01-01 00:26:53离开停车场,车辆缴费3元,车辆已缴费离开,当前停车场空余车位数量为100个。

举例说明2:
在这里插入图片描述
以上数据含义:车牌号为蒙GLHU13的车辆于2018-03-31 22:38:55进入停车场,该车辆尚未离开停车场,当前停车场空余车位数量为82个。

二、数据统计模块
本项目在金仓数据库中已创建数据库parkingdb,如下图所示:
在这里插入图片描述

数据库parkingdb中已创建表parking_data,该表的字段如下所示:
在这里插入图片描述

表parking_data的字段说明如下:
在这里插入图片描述

表parking_data的部分数据如下:
在这里插入图片描述

本模块要求使用金仓数据库客户端工具ksql登录金仓数据库,编写SQL语句完成如下题目。

连接数据 需要进入/opt/Kingbase/ES/V8/Server/bin 执行:

./ksql -d test -U system
在这里插入图片描述

请结合以上信息完成如下3题:

题目1、计算停车场每小时的停车费,找出停车费最高的前3个小时。(5分)
要求:计算停车场每小时的停车费,找出停车费最高的前3个小时,按停车费从大到小的顺序排序,显示的字段包括hour,avg_price,其中,hour表示小时(例如:2018-01-01 11:00:00),avg_price表示停车费。请将作答的SQL语句以及执行结果分别填到考生作答手册里。

    示例答案:
SELECT DATE_TRUNC('hour', timein) AS hour, SUM(price) AS avg_price
FROM parking_data
GROUP BY hour
ORDER BY avg_price DESC
LIMIT 3;

运行截图:

在这里插入图片描述

题目2、找出2018年1月1日07:00至8:59期间进入停车场的记录。(5分)
   要求:找出2018年1月1日07:00至8:59期间进入停车场的记录,按车辆离开停车场时间从大到小的顺序显示记录,显示的字段包括cn、timein、timeout、price、state、rps。请将作答的SQL语句以及执行结果分别填到考生作答手册里。

  示例答案:
SELECT *
FROM parking_data
WHERE DATE(timein) = '2018-01-01' AND
EXTRACT(HOUR FROM timein) BETWEEN 7 AND 8
ORDER BY timeout DESC;
 运行截图:

在这里插入图片描述

   题目3、对停车时长超过2小时的记录进行排序,找出停车时长最长的前5条记录,将其保存到长时间停车表long_parking1中。(10分)
   要求:创建表long_parking1,表long_parking1的字段包括cn、timein、timeout、price、state、rps。对parking_data表中停车时长超过2小时的记录进行排序,找出停车时长最长的前5条记录,将这5条记录保存到表long_parking1。按timeout从大到小的顺序显示long_parking1的前5条记录。请将作答的SQL语句以及执行结果分别填到考生作答手册里。

示例答案:          
CREATE TABLE long_parking1(

 cn VARCHAR(20),

 timein TIMESTAMP,

 timeout TIMESTAMP,

 price NUMERIC(5,2),

 state INT,

 rps INT

);

INSERT INTO long_parking1

SELECT *

FROM parking_data

WHERE ((DATE_PART('day', timeout - timein) * 24 +

       DATE_PART('hour', timeout - timein)) * 60 +

       DATE_PART('minute', timeout - timein))  > 120

order by ((DATE_PART('day', timeout - timein) * 24 +

       DATE_PART('hour', timeout - timein)) * 60 +

       DATE_PART('minute', timeout - timein)) desc

LIMIT 5;

select * from long_parking1 order by timeout desc;

运行截图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值