You are on page 1of 3

1) How to get Number weekends in current Month

a) SELECT TRIM (TO_CHAR (dt, 'DAY')), COUNT (*)


FROM (SELECT (TRUNC (SYSDATE, 'MONTH') + LEVEL - 1) AS dt
FROM DUAL
CONNECT BY LEVEL <=
( ( TRUNC (LAST_DAY (SYSDATE))
- TRUNC (SYSDATE, 'MONTH')
)
+ 1
))
WHERE TRIM (TO_CHAR (dt, 'DAY')) IN ('SUNDAY')
GROUP BY TRIM (TO_CHAR (dt, 'DAY'));
/
SELECT COUNT (*) AS weekends
FROM (SELECT (TRUNC (SYSDATE, 'mm') + LEVEL - 1) AS current_dt
FROM DUAL
CONNECT BY LEVEL <= LAST_DAY (SYSDATE) - TRUNC (SYSDATE, 'mm') + 1)
WHERE TO_CHAR (current_dt, 'dy') IN ('sun');
/
SELECT COUNT (*) AS weekends
FROM (SELECT (TRUNC (SYSDATE, 'MM') + LEVEL - 1) AS dt
FROM DUAL
CONNECT BY LEVEL <= LAST_DAY (SYSDATE) - TRUNC (SYSDATE, 'MM') + 1)
WHERE TO_CHAR (dt, 'DY') IN ('SUN')
/
2) Wheather column have string data or numerical data

CREATE TABLE c(t VARCHAR2(12))


/
INSERT INTO C ( T ) VALUES (
'123');
INSERT INTO C ( T ) VALUES (
'134');
INSERT INTO C ( T ) VALUES (
'12A');
INSERT INTO C ( T ) VALUES (
'ABS');
INSERT INTO C ( T ) VALUES (
'abc');
COMMIT;
/
SELECT t,
(CASE
WHEN REGEXP_LIKE (t, '[A-Z]') OR REGEXP_LIKE (t, '[a-z]')
THEN 'String'
ELSE 'Numeric'
END
) AS strformat
FROM c
/
SELECT t,
(CASE
WHEN REGEXP_INSTR (t, '[A-Z]') > 0
THEN 'String'
WHEN REGEXP_INSTR (t, '[a-z]') > 0
THEN 'String'
ELSE 'Numeric'
END
) AS strformat
FROM c
/
c)How to find record count of a table without using count(*).

SELECT cnt
FROM (SELECT ROW_NUMBER () OVER (ORDER BY empno DESC) AS cnt,
ROW_NUMBER () OVER (ORDER BY empno ASC) AS cnt1
FROM emp)
WHERE cnt1 = 1
/

d) How to get the below results using this query


*
**
***

SELECT LPAD ('*', LEVEL, '*') AS str


FROM DUAL
CONNECT BY LEVEL <= 3

E) eache department wise employee list with comma separated values.

select deptno,LISTAGG(ename,',') within group(order by sal asc) from emp


group by deptno
F)
SELECT SUBSTR ('NAVEEN', LEVEL, 1) AS str, LEVEL
FROM DUAL
CONNECT BY LEVEL <= LENGTH ('NAVEEN')

Output:
STR LEVEL
N 1
A 2
V 3
E 4
E 5
N 6
G)
SELECT REGEXP_SUBSTR ('A1,A2,A4', '[^,]+', 1, LEVEL) AS str
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('A1,A2,A4', '[^,]+', 1, LEVEL) IS NOT NULL
Output:
STR
A1
A2
A4
h)
SELECT REGEXP_SUBSTR ('14,15,16,17,19,23', '[^,]+', 1, LEVEL) AS str
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('14,15,16,17,19,23', '[^,]+', 1, LEVEL) IS NOT NULL
OutPut:
STR
14
15
16
17
19
23

You might also like