with temp as(
select trunc(sysdate)-level createday
from dual
connect by level<100
)
select
substr(listagg (to_char(createday,'yyyy/mm/dd'),'-') WITHIN GROUP (ORDER BY createday),1,10)||'-'
||substr(listagg (to_char(createday,'yyyy/mm/dd'),'-') WITHIN GROUP (ORDER BY createday),-10,10) week
,'' 周一,'' 周二,'' 周三,'' 周四,'' 周五,'' 周六,'' 周日
from temp
group by to_char(createday,'yyyymm'),to_char(createday,'w')
uj5u.com熱心網友回復:
with temp as(
select trunc(sysdate)-level createday
from dual
connect by level<100
)
select
min(to_char(createday,'yyyy/mm/dd'))||'-'||max(to_char(createday,'yyyy/mm/dd'))
,'' 周一,'' 周二,'' 周三,'' 周四,'' 周五,'' 周六,'' 周日
from temp
group by to_char(createday,'yyyymm'),to_char(createday,'w')
uj5u.com熱心網友回復:
謝謝!不過結果不是想要的
uj5u.com熱心網友回復:
運行出來的四月結果,都對的,就是在第六條記錄,按理是“2019/05/01-2019/05/05”
uj5u.com熱心網友回復:
第一次注意這個周是從第一天開始的,一直以為是從周一開始的……
uj5u.com熱心網友回復:
我寫報表,測驗的時候也是,剛碰上一號在周一的!后面上交代碼才發現有問題,麻煩你了
uj5u.com熱心網友回復:
with temp as(
select
ROW_NUMBER() OVER(ORDER BY trunc(sysdate)-level) RN,
to_char(trunc(sysdate)-level,'yyyymm') createmonth,
trunc(sysdate)-level createday
from dual
connect by level<100
)
select to_char(min(createday),'yyyy/mm/dd')||'-'||to_char(max(createday),'yyyy/mm/dd')
from(
select *
from temp
model
partition by (createmonth)
dimension by (rn)
measures(createday,0 week)
rules(
week[rn]= CASE WHEN nvl(to_char(createday[CV()-1],'day'),'星期日')='星期日' then nvl(week[cv()-1],0)+1 ELSE week[cv()-1] END
))
group by createmonth,week order by 1
uj5u.com熱心網友回復:
七樓的SQL陳述句結果,,,,,效果跟按月來一樣的
uj5u.com熱心網友回復:
七樓的SQL陳述句結果,,,,,效果跟按月來一樣的
uj5u.com熱心網友回復:
效果跟按月的效果一樣
uj5u.com熱心網友回復:
沒有啊
uj5u.com熱心網友回復:
11樓我也沒復制錯.....吧
uj5u.com熱心網友回復:
要不,再copy一下?
uj5u.com熱心網友回復:
我就是上面的陳述句,你先把最外面的select 去掉,看看里面select 你的結果是什么
uj5u.com熱心網友回復:
時間范圍內的每一天都列印出來了
uj5u.com熱心網友回復:
with temp as(
select
ROW_NUMBER() OVER(ORDER BY trunc(sysdate)-level) RN,
to_char(trunc(sysdate)-level,'yyyymm') createmonth,
trunc(sysdate)-level createday
from dual
connect by level<100
)
select *
from temp
model
partition by (createmonth)
dimension by (rn)
measures(createday,0 week)
rules(
week[rn]= CASE WHEN nvl(to_char(createday[CV()-1],'day'),'星期日')='星期日' then nvl(week[cv()-1],0)+1 ELSE week[cv()-1] END
)
order by 3
這個,看下week 是不是一周一個值
uj5u.com熱心網友回復:
我給我朋友運行(Oracle最新版本),運行結果是對的,跟你顯示的一樣,
uj5u.com熱心網友回復:
他的PL/SQL development查看屬性,12g。通過select * from v$version查看,都是11.2.0.1.0
uj5u.com熱心網友回復:
with temp as(
select
ROW_NUMBER() OVER(ORDER BY trunc(sysdate)-level) RN,
to_char(trunc(sysdate)-level,'yyyymm') createmonth,
trunc(sysdate)-level createday
from dual
connect by level<100
)
select *
from temp
model
partition by (createmonth)
dimension by (rn)
measures(createday,0 week,to_char(createday,'day') weekday)
rules(
week[rn]= CASE WHEN nvl(to_char(createday[CV()-1],'day'),'星期日')='星期日' then nvl(week[cv()-1],0)+1 ELSE week[cv()-1] END
)
order by 3
with temp as(
select trunc(sysdate)-level createday
from dual
connect by level<100
)
select
min(to_char(createday,'yyyy/mm/dd'))||'-'||max(to_char(createday,'yyyy/mm/dd'))
,'' 周一,'' 周二,'' 周三,'' 周四,'' 周五,'' 周六,'' 周日
from temp
group by to_char(createday,'yyyymm'),to_char(createday,'w')
select
ROW_NUMBER() OVER(ORDER BY to_date('20190528','yyyymmdd')+level-1) RN,
to_char(to_date('20190528','yyyymmdd')+level-1,'yyyymm') createmonth,
to_date('20190528','yyyymmdd')+level-1 createday
from dual
connect by level<=to_date('20190607','yyyymmdd')-to_date('20190528','yyyymmdd')+1
with temp as(
select trunc(sysdate)-level createday
from dual
connect by level<100
)
select
substr(listagg (to_char(createday,'yyyy/mm/dd'),'-') WITHIN GROUP (ORDER BY createday),1,10)||'-'
||substr(listagg (to_char(createday,'yyyy/mm/dd'),'-') WITHIN GROUP (ORDER BY createday),-10,10) week
,'' 周一,'' 周二,'' 周三,'' 周四,'' 周五,'' 周六,'' 周日
from temp
group by to_char(createday,'yyyymm'),to_char(createday,'w')
uj5u.com熱心網友回復:
SELECT
A || '至' || b AS 區間
FROM
(
SELECT
A .MW,
MIN (A .DT) AS A,
MAX (A .DT) AS b
FROM
(
SELECT
TO_CHAR (dt, 'yyyy-mm-dd') AS dt,
TO_CHAR (dt, 'MM') || TO_CHAR (dt, 'W') AS MW
FROM
(
SELECT
TRUNC (SYSDATE - 1 + ROWNUM - 30, 'dd') dt
FROM
dual CONNECT BY ROWNUM <= 30
)
) A
GROUP BY
A .mw
ORDER BY
mw
);
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
這么基礎的groupby怎么連model都整出來了
with tab1 as (
select to_date('20190520', 'yyyymmdd') + level dt
from dual
connect by level <= 20
)
select min(t1.dt),
max(t1.dt)
from tab1 t1
group by to_char(t1.dt, 'mm'), to_char(t1.dt + 1, 'ww')
order by min(t1.dt)
;
uj5u.com熱心網友回復:
這么基礎的groupby怎么連model都整出來了
with tab1 as (
select to_date('20190520', 'yyyymmdd') + level dt
from dual
connect by level <= 20
)
select min(t1.dt),
max(t1.dt)
from tab1 t1
group by to_char(t1.dt, 'mm'), to_char(t1.dt + 1, 'ww')
order by min(t1.dt)
;
with tab1 as (
select to_date('20190520', 'yyyymmdd') + level dt
from dual
connect by level <= 20
)
select min(t1.dt),
max(t1.dt)
from tab1 t1
group by to_char(t1.dt, 'mm'), to_char(t1.dt + 1, 'ww')
order by min(t1.dt)
;
with temp as(
select trunc(sysdate)-level createday
from dual
connect by level<100
)
select
substr(listagg (to_char(createday,'yyyy/mm/dd'),'-') WITHIN GROUP (ORDER BY createday),1,10)||'-'
||substr(listagg (to_char(createday,'yyyy/mm/dd'),'-') WITHIN GROUP (ORDER BY createday),-10,10) week
,'' 周一,'' 周二,'' 周三,'' 周四,'' 周五,'' 周六,'' 周日
from temp
group by to_char(createday,'yyyymm'),to_char(createday,'w')
謝謝
uj5u.com熱心網友回復:
這么基礎的groupby怎么連model都整出來了
with tab1 as (
select to_date('20190520', 'yyyymmdd') + level dt
from dual
connect by level <= 20
)
select min(t1.dt),
max(t1.dt)
from tab1 t1
group by to_char(t1.dt, 'mm'), to_char(t1.dt + 1, 'ww')
order by min(t1.dt)
;
with data1 as (
select (trunc(sysdate) -level) as days,
to_char(sysdate-level,'day') weekday,
to_char(sysdate-level+1,'ww') as week,
last_day(sysdate-level) as lastday
from dual
connect by level <=200)
select min(days),max(days),week,lastday
from data1
group by week,lastday
order by week desc
select row_number() over(order by to_char(min(t.sj),'YYYY-MM-DD') asc,to_char(max(t.sj),'YYYY-MM-DD') asc,yh.yh asc) xh,
to_char(min(t.sj),'YYYY-MM-DD') mindt,to_char(max(t.sj),'YYYY-MM-DD') maxdt
,TO_CHAR(t.sj, 'iw') zrz--自然周(數字,表示一年的第幾周)
,yh.yh xm
,count(1) zsl,sum(case when t.zt<>0 then 1 else 0 end) as wdq,sum(case when t.zt=0 then 1 else 0 end) as ydq
from cxx t
left join YH yh on t.ry=yh.h
WHERE t.sj between to_date('2019-04-25 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2019-09-25 23:59:59','yyyy-mm-dd hh24:mi:ss')
group by to_char(t.sj ,'iw'),to_char(t.sj,'mm'),yh.yh;
WITH
T1 AS (SELECT TO_DATE('2019-01-01','YYYY-MM-DD') D1,TO_DATE('2019-12-31','YYYY-MM-DD') D2 FROM DUAL),
T2 AS (SELECT (D1+LEVEL-1) D FROM T1 CONNECT BY LEVEL <= D2-D1 +1),
T3 AS (SELECT D,
CASE WHEN D = TRUNC(D,'D')+1 THEN 1 WHEN D = TRUNC(D,'MM') THEN 1 ELSE 0 END B,
CASE WHEN D = TRUNC(D,'D') THEN 1 WHEN D = LAST_DAY(D) THEN 1 ELSE 0 END E
FROM T2 ) ,
T4 AS (SELECT D ,ROWNUM R FROM (SELECT D FROM T3 WHERE B = 1 )),
T5 AS (SELECT D ,ROWNUM R FROM (SELECT D FROM T3 WHERE E = 1 ))
SELECT TRUNC(T4.D) D1,TRUNC(T5.D) D2 FROM T4 FULL JOIN T5 ON T5.R = T4.R ORDER BY 1,2 ;
**桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......
我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......
關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......