select t.sid,count(1) rnt from t_score t group by t.sid ;
select t.sid, round(avg(nvl(t.grade, 0)), 2) avg_grade
from t_score t
where t.sid in (select t.sid
from (select t.sid, count(1) rnt
from t_score t
where t.grade <= 59
group by t.sid) t
where rnt >= 2)
group by t.sid;
select t.sid, round(avg(nvl(t.grade, 0)), 2) avg_grade
from t_score t
where t.sid in (select t.sid
from t_score t
where t.grade <= 59
group by t.sid
having count(1) >= 2)
group by t.sid;
select * from t_score t ;
--level函數
select level from dual connect by level <= 7 ;
/*與時間粒度相關的 時間 函數*/
--獲取當前時間
select sysdate from dual;
--獲取年月日
select trunc(sysdate) from dual;
select to_char(sysdate, 'YYYYMMDD') from dual ;
--獲取時分秒
select to_char(sysdate,'hh24:mi:ss') from dual;
--單個獲取年月日時分秒
select sysdate from dual;
select to_char(sysdate, 'YYYY') from dual ;
select to_char(sysdate, 'MM') from dual ;
select to_char(sysdate, 'DD') from dual ;
select to_char(sysdate, 'hh24') from dual ;
select to_char(sysdate, 'mi') from dual ;
select to_char(sysdate, 'ss') from dual ;
--返回季度 1 2 3 4
select to_char(sysdate, 'Q') from dual;
--返回本月第幾周
SELECT TO_CHAR(SYSDATE, 'W') FROM DUAL;
--DD 當月第幾天
SELECT TO_CHAR(SYSDATE, 'DD') FROM DUAL;
--D 周內第幾天
SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL;
-- 周幾
SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL;
--下週幾的時間
select next_day(sysdate,'星期四') from dual ;
--返回兩個時間的年代數
select to_char(sysdate,'YYYY') - to_char(t.hiredate,'YYYY') year from emp t where t.empno = 7369 ;
--返回兩個時間精確的年數
select months_between(sysdate,t.hiredate)/12 year from emp t where t.empno = 7369 ;
--返回兩個時間的精確月份數
select months_between(sysdate,t.hiredate) month from emp t where t.empno = 7369 ;
--返回兩個時間的精確天數
select trunc(sysdate - t.hiredate) day from emp t where t.empno = 7369 ;
oracle——SQL複習04
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.