Q)
i
have emp table in which columns are empid,empname,sal now i want to increase
the sal of the particular emp whose sal is <10000 with 2000RS & sal
>10000 & <20000 with 4000RS and whose sal is >20000 with 5000RS
now write a single update query.
UPDATE Emp
SET sal = sal +
CASE
WHEN sal>=1000 AND
sal<2000 THEN 200
WHEN sal>=2000 AND
sal<3000 THEN 300
END;
SELECT
deptno, empno, sal
FROM emp e
WHERE
2 > ( SELECT COUNT(e1.sal)
FROM emp e1
WHERE
e.deptno = e1.deptno AND e.sal < e1.sal )
ORDER BY 1,3 DESC;
I am looking at the following output. We need to stick
to this format.
Total 1980 1981 1982 1983
----------- ------------ ------------ ------------- -----------
14 1 10 2 1
SELECT COUNT (*),
COUNT(DECODE(TO_CHAR (hiredate, 'YYYY'),'1980', empno))
"1980",
COUNT (DECODE (TO_CHAR (hiredate, 'YYYY'),
'1981', empno)) "1981",
COUNT (DECODE (TO_CHAR (hiredate, 'YYYY'),
'1982', empno)) "1982",
COUNT (DECODE (TO_CHAR (hiredate, 'YYYY'),
'1983', empno)) "1983"
FROM emp;
SELECT a.deptno, ename, sal, (SELECT SUM(sal) FROM emp b
WHERE a.deptno = b.deptno)
FROM emp a
ORDER BY a.deptno;
OUTPUT :
=======
DEPTNO ENAME SAL SUM (SAL)
========= ======= ==== =========
10 KING 5000 11725
30 BLAKE 2850 10900
10 CLARK 2450 11725
10 JONES 2975 11725
30 MARTIN 1250 10900
30 ALLEN 1600 10900
30 TURNER 1500 10900
30 JAMES 950 10900
30 WARD 2750 10900
20 SMITH 8000 33000
20 SCOTT 3000 33000
20 MILLER 20000 33000
The output is as follows - we need to stick to this
format :
Job Dept 10 Dept 20 Dept 30 Total
---------- --------------- ------------- ------------- ---------
ANALYST 6000 6000
CLERK 1300 1900 950 4150
MANAGER 2450 2975 2850 8275
PRESIDENT 5000 5000
SALESMAN 5600 5600
SELECT job "Job", SUM (DECODE (deptno, 10,
sal)) "Dept 10",
SUM (DECODE (deptno, 20, sal)) "Dept 20",
SUM (DECODE (deptno, 30, sal)) "Dept 30",
SUM (sal) "Total"
FROM emp
GROUP BY job ;
5. 4th Top Salary of all the employees:
SELECT DEPTNO, ENAME, SAL
FROM EMP A
WHERE
3 = (SELECT COUNT(B.SAL) FROM EMP B
WHERE A.SAL < B.SAL) ORDER BY SAL DESC;
6. Retrieving the 5th row FROM a table:
SELECT DEPTNO, ENAME, SAL
FROM EMP
WHERE ROWID = (SELECT ROWID FROM EMP WHERE ROWNUM <= 5
MINUS
SELECT ROWID FROM EMP WHERE ROWNUM <
5)
7. Tree Query :
Name Null? Type
-------------------------------------------------------------------
SUB NOT NULL VARCHAR2(4)
SUPER VARCHAR2(4)
PRICE NUMBER(6,2)
SELECT sub, super
FROM parts
CONNECT BY PRIOR sub = super
START WITH sub = 'p1';
DELETE FROM table_name A
WHERE ROWID > (
SELECT min(ROWID) FROM table_name B
WHERE A.col = B.col);
SELECT *
FROM emp
WHERE (ROWID,0) IN (SELECT ROWID,
MOD(ROWNUM,4)
FROM emp);
SELECT ename, deptno, sal
FROM (SELECT * FROM emp ORDER BY sal DESC)
WHERE ROWNUM < 10;
SELECT
f2,
COUNT(DECODE(greatest(f1,59), least(f1,100), 1, 0)) "Range
60-100",
COUNT(DECODE(greatest(f1,30),
least(f1, 59), 1, 0)) "Range 30-59",
COUNT(DECODE(greatest(f1,29), least(f1,
0), 1, 0)) "Range 00-29"
FROM my_table
GROUP BY
f2;
SELECT ename "Name", sal "Salary",
DECODE( TRUNC(sal/1000, 0), 0, 0.0,
1,
0.1,
2,
0.2,
3, 0.3)
"Tax rate"
FROM emp;
COL NAME DATATYPE
----------------------------------------
DNO NUMBER
SEX CHAR
SELECT dno, SUM(DECODE(sex,'M',1,0)) MALE,
SUM(DECODE(sex,'F',1,0)) FEMALE,
COUNT(DECODE(sex,'M',1,'F',1)) TOTAL
FROM t1
GROUP BY dno;
SELECT EXP(SUM(LN(col1))) FROM srinu;
SELECT num
FROM satyam
GROUP BY num
HAVING COUNT(*) > 1;
*
**
***
****
*****
SELECT RPAD(DECODE(temp,temp,'*'),ROWNUM,'*')
FROM srinu1;
FUNCTION F_BALANCE_VALUE
(p_business_group_id number, p_payroll_action_id number,
p_balance_name varchar2, p_dimension_name varchar2)
RETURN NUMBER
IS
l_bal number;
l_defined_bal_id number;
l_assignment_action_id number;
BEGIN
SELECT assignment_action_id
INTO l_assignment_action_id
FROM
pay_assignment_actions
WHERE
assignment_id
= :p_assignment_id
AND
payroll_action_id = p_payroll_action_id;
SELECT
defined_balance_id
INTO
l_defined_bal_id
FROM
pay_balance_types pbt,
pay_defined_balances pdb,
pay_balance_dimensions pbd
WHERE
pbt.business_group_id =
p_business_group_id
AND UPPER(pbt.balance_name) =
UPPER(p_balance_name)
AND pbt.business_group_id =
pdb.business_group_id
AND pbt.balance_type_id =
pdb.balance_type_id
AND UPPER(pbd.dimension_name) =
UPPER(p_dimension_name)
AND pdb.balance_dimension_id =
pbd.balance_dimension_id;
l_bal :=
pay_balance_pkg.get_value(l_defined_bal_id,l_assignment_action_id);
RETURN (l_bal);
exception
WHEN no_data_found THEN
RETURN 0;
END;
FUNCTION f_element_value(
p_classification_name in varchar2,
p_element_name in varchar2,
p_business_group_id in number,
p_input_value_name in varchar2,
p_payroll_action_id in
number,
p_assignment_id in number
)
RETURN number
IS
l_element_value number(14,2)
default 0;
l_input_value_id
pay_input_values_f.input_value_id%type;
l_element_type_id pay_element_types_f.element_type_id%type;
BEGIN
SELECT
DISTINCT element_type_id
INTO l_element_type_id
FROM pay_element_types_f pet,
pay_element_classifications pec
WHERE pet.classification_id = pec.classification_id
AND upper(classification_name) =
upper(p_classification_name)
AND upper(element_name) = upper(p_element_name)
AND pet.business_group_id =
p_business_group_id;
SELECT input_value_id
INTO l_input_value_id
FROM pay_input_values_f
WHERE upper(name) = upper(p_input_value_name)
AND element_type_id = l_element_type_id;
SELECT NVL(prrv.result_value,0)
INTO
l_element_value
FROM
pay_run_result_values prrv,
pay_run_results prr,
pay_assignment_actions
paa
WHERE
prrv.run_result_id = prr.run_result_id
AND
prr.assignment_ACTION_ID = paa.assignment_action_id
AND
paa.assignment_id = p_assignment_id
AND
input_value_id = l_input_value_id
AND
paa.payroll_action_id = p_payroll_action_id;
RETURN (l_element_value);
exception
WHEN no_data_found THEN
RETURN 0;
END;
SELECT ename,
NVL(LENGTH(REPLACE(TRANSLATE(UPPER(RTRIM(ename)),'ABCDEFGHIJKLMNOPQRSTUVWXYZ''
',' @'),'
',''))+1,1) word_length
FROM emp;
Explanation :
TRANSLATE(UPPER(RTRIM(ename)),'ABCDEFGHIJKLMNOPQRSTUVWXYZ''
',' @') -- This
will translate all the characters FROM A-Z
including a single quote to a space. It will also translate a space to a @.
REPLACE(TRANSLATE(UPPER(RTRIM(ename)),'ABCDEFGHIJKLMNOPQRSTUVWXYZ''
',' @'),' ','')
-- This will replace every space
with nothing in the above result.
LENGTH(REPLACE(TRANSLATE(UPPER(RTRIM(ename)),'ABCDEFGHIJKLMNOPQRSTUVWXYZ''
',' @'),'
',''))+1 -- This will give u the count of @
characters in the above result.
CREATE OR REPLACE FUNCTION is_leap_year (p_date IN
DATE) RETURN VARCHAR2
AS
v_test DATE;
BEGIN
v_test := TO_DATE ('29-Feb-' || TO_CHAR
(p_date,'YYYY'),'DD-Mon-YYYY');
RETURN 'Y';
EXCEPTION
WHEN OTHERS THEN
RETURN 'N';
END is_leap_year;
SQL> SELECT hiredate, TO_CHAR (hiredate, 'Day')
weekday
FROM emp
WHERE
is_leap_year (hiredate) = 'Y';
This was really a good post and also very informative.for more details
ReplyDeletehttp://www.tekclasses.com/
Your blog is really useful. Thanks for sharing this useful
ReplyDeleteblog..Suppose if anyone interested to learn
http://www.tekclasses.com/
Very good collection of question and answers thank you for sharing this article. Know more about ETL Testing Training
ReplyDeleteVery good collection of question and answers thank you for sharing this article. Know more about ETL Testing Training
ReplyDeletevery impressive and appreciate for sharing with us.
ReplyDeleteHello,
ReplyDeleteThis is excellent information. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...SQL Interview Questions.
OlĂ ,
ReplyDeleteAllow me to show my gratitude bloggers. You guys are like unicorns. Never seen but always spreading magic. Your content is yummy. So satisfied.
I am attempting to create a single SQL Statement that will get me record counts from 3 Tables and have the results returned in a single Record.
I Feel I am close because I have CTE statement that gets me my results but If there counts for multiple tables on the same record I get 2 records for that customer.
WITH
cte as
(SELECT DUNS.Duns, DUNS.Duns_Name, 0 AS CoilCountInbound, COUNT(LIVMATL.OP_Crnt_ID) AS CoilCount, 0 AS CoilCountShipped, 0 AS CoilCountTotal
FROM LIVMATL LEFT OUTER JOIN DUNS ON LIVMATL.Stl_Prod_Duns = DUNS.Duns
WHERE DUNS.Customer_Type = 'I' OR DUNS.Customer_Type = 'C'
GROUP by DUNS.Duns,DUNS.Duns_Name),
cte2 AS
(SELECT DUNS.Duns, DUNS.Duns_Name, 0 AS CoilCountInbound, 0 AS CoilCount, COUNT(LIVILOD.OP_Crnt_ID) AS CoilCountShipped, 0 AS CoilCountTotal
FROM LIVILOD LEFT OUTER JOIN DUNS ON LIVILOD.Stl_Prod_Duns = DUNS.Duns LEFT OUTER JOIN LIVMLOD ON (LIVILOD.Master_Ref_Nbr = LIVMLOD.Master_Ref_Nbr)
WHERE (DUNS.Customer_Type = 'I' OR DUNS.Customer_Type = 'C') AND (LIVMLOD.Ship_Date >= '04/06/18' AND LIVMLOD.Ship_Date <= '04/13/18')
GROUP by DUNS.Duns,DUNS.Duns_Name),
cte3 AS
(SELECT DUNS.Duns, DUNS.Duns_Name, COUNT(INBOUND.SP_Matl_ID) AS CoilCountInbound, 0 AS CoilCount, 0 AS CoilCountShipped, 0 AS CoilCountTotal
FROM INBOUND LEFT OUTER JOIN DUNS ON INBOUND.Stl_Prod_Duns = DUNS.Duns
WHERE DUNS.Customer_Type = 'I' OR DUNS.Customer_Type = 'C'
GROUP by DUNS.Duns,DUNS.Duns_Name)
SELECT
COALESCE(A.Duns, B.Duns, C.Duns) as Duns,
COALESCE(A.Duns_Name, B.Duns_Name, C.Duns_Name) as Duns_Name,
ISNULL(C.CoilCountInbound,0) AS CoilCountInbound,
ISNULL(A.CoilCount,0) AS CoilCount,
ISNULL(B.CoilCountShipped,0) AS CoilCountShipped,
COALESCE(A.CoilCount,0) + COALESCE(B.CoilCountShipped,0) + COALESCE(C.CoilCountInbound,0) AS CoilCountTotal
FROM cte A FULL JOIN cte2 B ON A.Duns = B.Duns FULL JOIN cte3 C on B.Duns = C.Duns
ORDER BY Duns_Name
Results:
Records 6 & 7, 10 & 11
I expected those to be in a single line for that customer. Names and ID's are the same....
It was cool to see your article pop up in my google search for the process yesterday. Great Guide.
Keep up the good work!
Thanks a heaps,
Ajeeth Kapoor
This information you provided in the blog that is really unique I love it!! Thanks for sharing such a great blog Keep posting..
ReplyDeleteETL Interview Questions and Answers
I love this blog . This is one of the best blog i ever seen. It's all about what i'm searching for. I love to read this blog again and again . Every time i enter this blog i get something new. This blog inspire me to write new blog. I write a blog name tutorialabc.com. It's about sql,c#,net etc
ReplyDeleteNice set of interview questions and answers.i have gone through it very helpful one thanks for sharing...
ReplyDeleteSQL Interview Questions & Answers.
Nice set of interview questions and answers.i have gone through it very helpful one thanks for sharing...
ReplyDeleteBest Training and Real Time Support
Android Training From India
Appium Training From India
ReplyDeleteMy name is Leah Brown, I'm a happy woman today? I told myself that any loan lender that could change my life and that of my family after having been scammed separately by these online loan lenders, I will refer to anyone who is looking for loan for them. It gave me and my family happiness, although at first I had a hard time trusting him because of my experiences with past loan lenders, I needed a loan of $300,000.00 to start my life everywhere as single mother with 2 children, I met this honest and God fearing online loan lender Gain Credit Loan who helped me with a $300,000.00 loan, working with a loan company Good reputation. If you are in need of a loan and you are 100% sure of paying the loan please contact (gaincreditloan1@gmail.com)
Nice information, this is will helpfull a lot, Thank for sharing, Keep do posting i like to follow this
ReplyDeleteinformatica online training
informatica online course
ReplyDeleteThank you for sharing wonderful information with us to get some idea about that content.
ETL Testing Online Training
ETL Testing Certification
Thanks.
ReplyDeletepower bi training
very nice collection for SQL Interview Questions and Answers
ReplyDeleteThanks for sharing your expertise in Salesforce training. Your blog posts are a valuable resource for those looking to build their Salesforce skills and explore career opportunities in the Salesforce ecosystem. Please visit our website:- Salesforce Training
ReplyDelete