在最近项目中,有一个客户需求是针对每天所有时间点的数据,分割成每5分钟展示一个用户数总数。
数据情景是:
一个游戏中所有用户在线的时间数据(当然简单的求和,可能会有重复数据)。但在这重点是Oracle SQL 中用于按照一定时间间隔分割的方法,具体5分钟分割实例如下:
SELECT tt.reasonContent,to_char(tt.day_id,'hh24:mi')daytime ,tt.num FROM (
SELECT ll.day_id,ll.reasonContent,COUNT(*) num FROM (
SELECT d.day_id,dd.logtime,dd.groupname,dd.userid,dd.reasonContent FROM (
SELECT i.logtime,i.gameid,i.Groupname,i.userid,i.reason,CASE WHEN dic.key_id IS NULL THEN '其他原因' ELSE dic.key_value END reasonContent FROM
table i LEFT JOIN
tableDic dic ON i.reason=dic.key_id )dd ,
(SELECT TO_DATE('2014-09-20 00:00:00','yyyy-mm-dd hh24:mi:ss') +(1 / 24 / 60 * 30 * (ROWNUM - 1)) DAY_ID FROM DUAL
CONNECT BY ROWNUM <= 288) D WHERE D.DAY_ID - (1 / 24 / 60 * 30) <= dd.LOGTIME AND D.DAY_ID >= dd.LOGTIME) ll GROU
在最近项目中,有一个客户需求是针对每天所有时间点的数据,分割成每5分钟展示一个用户数总数。数据情景是:一个游戏中所有用户在线的时间数据(当然简单的求和,可能会有重复数据)。但在这重点是Oracle SQL 中用于按照一定时间间隔分割的方法,具体5分钟分割实例如下:SELECT tt.reasonContent,to_char(tt.day_id,'hh24:mi')daytime ,tt.nu...
统计t_tjsj表中按照 cjsj (date类型)每5
分钟
统计0点到1点这个一
小时
内
时间
段内的数量:
select lpad(floor(to_char(cjsj,'mi')/5)*5,2,0) cjsj, count(bh) num
from t_tjsj where cjsj>to_date('2018-04-15 00:00:00','yyyy-MM-dd hh
24
:m...
工作时碰到一个需求,需要将(15:00,16:
30
,17:00)类型的字符串转换成(15:00——17:
30
)类型的字符串,即该字符串的第一个
时间
为开始
时间
,最后一个
时间
需要加上
30
分钟
作为结束
时间
,然后将开始
时间
和结束
时间
进行拼接。
步骤:先将该字符串
分割
,然后增加最后一个
时间
段的值,最后将第一个
时间
段和增加后的最后一个
时间
段拼接到一块。
方法
一:
方法
二:
(subst...
1.按年份查询
按年份
分组
查询后将结果按序排列
select to_char(SLRQ,'yyyy') ,count(*)from mv_ywst_fa group by to_char(SLRQ,'yyyy') ORDER BY to_char(SLRQ,'yyyy')
2.按季度查询
按季度
分组
查询后将结果按序排列
select to_char(SLRQ,'yyyy-Q') ,count(...
1.按照
时间
段进行
小时
的查询:
select nvl(res_t1.tvalue, 0) , res_t2.datevalue
from (select count(*) tvalue,
to_char(START_TIME,'yyyy-mm-dd hh
24
') timevalue
from KEFU_HUAWU...
首先明确分区表和表分区的区别:表分区是一种思想,分区表示一种技术实现。当表的大小过G的时候可以考虑进行表分区,提高查询效率,均衡IO。
oracle
分区表是
oracle
数据库提供的一种表分区的实现形式。表进行分区后,逻辑上仍然是一张表,原来的查询SQL同样生效,同时可以采用使用分区查询来优化SQL查询效率,不至于每次都扫描整个表
一、分区表基本操作
1、按
时间
分区表创建:
create
在
Oracle
中,可以使用内置函数 `REGEXP_SUBSTR` 来按指定的
分割
符
分割
字段。以下是一个示例:
假设有一个表 `employee`,其中包含一个名为 `name` 的列,每个值都是由逗号分隔的姓和名。现在要将姓和名分别显示在不同的列中。可以使用以下查询语句:
```sql
SELECT
REGEXP_SUBSTR(name, '[^,]+', 1, 1) AS last_name,
REGEXP_SUBSTR(name, '[^,]+', 1, 2) AS first_name
FROM employee;
`REGEXP_SUBSTR` 函数的第一个参数是要
分割
的字符串,第二个参数是用于匹配的正则表达式模式,第三个参数是指定要获取的匹配项的出现次数,第四个参数是指定从哪个位置开始搜索。在上面的查询语句中,正则表达式模式 `[^,]+` 匹配任意数量的非逗号字符,因此可以将字符串按逗号
分割
为两个子字符串。
请注意,如果要使用其他
分割
符,只需要将正则表达式模式中的逗号替换为所需的
分割
符即可。