SQL Training: Exercises on Functions

Exercises on Functions:
1. Write a Function which returns Ename from EMP table by taking empno as argument.

2. Write a scalar value return function which returns sum of two given numbers.

3. Write a Function to display biggest of 3 given numbers(need to take 3 argument for 3 values)

4. Write a Function to display maximum salary of a given deptno from EMP table.

5. Write a Function to display the SUM, AVG sal of employees according to their deptno’s.

6. Write a Function to display details of departments and their corresponding Employee details from DEPT and EMP tables according to deptno.

7. Write a Function to display all the employee details whose salary between first argument value and second argument value.

8. Write a function to display the Names of Employees whose name contain particular character (character we need to take from argument).

9.Write a function to display specific number of senior most employees in arganization.

10.write a table valued return function to display second heighest salary for each department.

MY SOLUTIONS:

---------------------------------------------------
---------------------------------------------------
--EXERCISES ON FUNCTIONS

--Q1
CREATE FUNCTION dbo.udf_EName(@empno AS NUMERIC(4,0))
     RETURNS VARCHAR(10)
AS
BEGIN
   DECLARE @empname VARCHAR(10)
   SELECT @empname =  ENAME FROM dbo.emp WHERE EMPNO = @empno
   RETURN @empname
END

--SELECT dbo.udf_EName(7369)

--Q2
CREATE FUNCTION dbo.udf_SumOfTwoNo(@num1 AS INT,@num2 AS INT)
     RETURNS INT
AS
BEGIN
   DECLARE @sum INT
   SELECT @sum = @num1 + @num2
   RETURN @sum
END
--SELECT dbo.udf_SumOfTwoNo(2,3)

--Q3
CREATE FUNCTION dbo.udf_MaxOfThreeNo(@num1 AS INT,@num2 AS INT,@num3 AS INT)
     RETURNS INT
AS
BEGIN
   DECLARE @max INT
   SELECT @max =  MAX(v) FROM (VALUES (@num1), (@num2), (@num3)) AS value(v);
   RETURN @max
END
--SELECT dbo.udf_MaxOfThreeNo(2,3,4)

--Q4
CREATE FUNCTION dbo.udf_MaxSal(@deptno AS NUMERIC(2,0))
     RETURNS NUMERIC(7,0)
AS
BEGIN
   DECLARE @max NUMERIC(7,0)
   SELECT @max =  MAX(SAL) FROM dbo.emp WHERE DEPTNO= @deptno
   RETURN @max
END

--SELECT dbo.udf_MaxSal(20)

--Q5
CREATE FUNCTION dbo.udf_MaxandAvgSal(@deptno AS NUMERIC(2,0))
  RETURNS TABLE
  RETURN SELECT MAX(SAL) AS MAXSAL,AVG(SAL) AS AVGSAL
         FROM dbo.emp
WHERE DEPTNO= @deptno

--SELECT * FROM dbo.udf_MaxandAvgSal(20)

--Q6
CREATE FUNCTION dbo.udf_DeptAndEmpDetails(@deptno AS NUMERIC(2,0))
  RETURNS TABLE
  RETURN SELECT d.DEPTNO
                   ,d.DNAME
                   ,d.LOC
   ,e.EMPNO
   ,e.ENAME
   ,e.JOB
   ,e.MGR
   ,e.HIREDATE
   ,e.SAL
   ,e.COMM
           FROM dbo.dept d
   INNER JOIN dbo.emp e
          ON d.DEPTNO = e.DEPTNO
  WHERE d.DEPTNO= @deptno

--SELECT * FROM dbo.udf_DeptAndEmpDetails(20)

--Q7

CREATE FUNCTION dbo.udf_SalInRange(@lowerlim AS NUMERIC(7,0),@upperlim AS NUMERIC(7,0))
  RETURNS TABLE
  RETURN SELECT e.EMPNO
   ,e.ENAME
   ,e.JOB
   ,e.MGR
   ,e.HIREDATE
   ,e.SAL
   ,e.COMM
   ,e.DEPTNO
           FROM dbo.emp e
  WHERE e.SAL BETWEEN  @lowerlim AND @upperlim

--SELECT * FROM dbo.udf_SalInRange(1100,3000)

--Q8

CREATE FUNCTION dbo.udf_Enamewithspecificchar(@specificchar AS CHAR(1))
  RETURNS TABLE
  RETURN SELECT e.ENAME
           FROM dbo.emp e
  WHERE e.ENAME LIKE '%' + @specificchar +'%'

--SELECT * FROM dbo.udf_Enamewithspecificchar('K')

--Q9

CREATE FUNCTION dbo.udf_GivenNoOfSeniorEmp(@num INT)
  RETURNS TABLE
  RETURN SELECT TOP (@num) e.EMPNO
   ,e.ENAME
   ,e.JOB
   ,e.MGR
   ,e.HIREDATE
   ,e.SAL
   ,e.COMM
   ,e.DEPTNO
           FROM dbo.emp e
  ORDER BY e.HIREDATE

--SELECT * FROM dbo.udf_GivenNoOfSeniorEmp(2)

--Q10

CREATE FUNCTION dbo.udf_SecondMaxSalPerDept(@deptno AS NUMERIC(2,0))
  RETURNS TABLE
  RETURN  SELECT TOP 1 X.EMPNO
,X.ENAME
,X.JOB
,X.MGR
,X.HIREDATE
,X.SAL
,X.COMM
,X.DEPTNO
   FROM
  (SELECT TOP 2 *
FROM dbo.emp e
  WHERE  e.DEPTNO = @deptno
  ORDER BY e.SAL DESC)X
  ORDER BY X.SAL

--SELECT * FROM dbo.udf_SecondMaxSalPerDept(30)


Comments

Popular posts from this blog

SQL Training: Exercises on Stored Procedures and Functions

SQL Training: Exercise on Clauses,String and Mathematical functions,Date Time and Aggregate Functions

SQL Training:Exercises on Tables