Some Fascinating Sql Programs


 

Query for ArmStrong Number

 

Query -1

 

SELECT   :a,

CASE

WHEN SUM (rev * rev * rev) = :a THEN ‘Armstrong number’

ELSE ‘Not Armstron number’

END

Arm_number

FROM   (SELECT   SUBSTR (:a, ROWNUM, 1) rev FROM employees)

 

 

Query -2

 

SELECT   CASE

WHEN SUM( (  SUBSTR (:num, ROWNUM, 1)

* SUBSTR (:num, ROWNUM, 1)

* SUBSTR (:num, ROWNUM, 1))) = :num

THEN

‘ Armstrong’

ELSE

‘not Armstrong’

END “Number is”

FROM   employees;

 

 

Input:123

Output : not a Armstrong no

 

 

LOGIC

1*1*1+2*2*2+3*3*3<>123,  ——–This is a  not Armstrong number

1*1*1+5*5*5+3*3*3=153 ——This is a Armstrong number

The subquery seperates the given input into rows. So it becomes easy to process

SUBSTR (:a, ROWNUM, 1) is important for splitting a word to rows which makes easy to process

 

 

Pruning Branches

 

The Below Query Gives the organisational levels for who is under whom

 

SELECT employee_id, last_name, LPAD(last_name, LENGTH(last_name)+(LEVEL*2)-2, ‘–‘)

FROM employees

WHERE last_name <> ‘Bruce’ AND  rownum<20

START WITH last_name=’King’

CONNECT BY PRIOR employee_id=manager_id AND last_name <> ‘Hunold’

ORDER BY employee_id;

 

Logic

 

With the use of LPAD we are able to insert the symbol — and find the levels.

 

Last Friday Salary

 

SELECT HIRE_DATE,

CASE

WHEN TO_CHAR(HIRE_DATE, ‘DD’)<=15

THEN NEXT_DAY(LAST_DAY(HIRE_DATE)-7, ‘FRIDAY’)

ELSE NEXT_DAY(LAST_DAY(ADD_MONTHS(HIRE_DATE,1))-7, ‘FRIDAY’)

END MONTH_SAL_DATE

FROM EMPLOYEES

 

Input:17-06-1987

Output:31-07-1987

 

Logic

In this the below line fetches the last date and it subtracts seven days. After the subtraction when we give the next day as Friday. We get the last Friday of the month.

NEXT_DAY(LAST_DAY(HIRE_DATE)-7, ‘FRIDAY’)

 

 

 

Displaying Months dates

 

Query 1

SELECT   ROWNUM || ‘/’ || ‘&mon’ || ‘/’ || ‘&yyyy’ “DATE”

FROM   employees

WHERE   ROWNUM <=

(SELECT   TO_CHAR (LAST_DAY (‘&dd/&mon/&yyyy’), ‘dd’) FROM DUAL);

 

Query-2

 

SELECT   ROWNUM || ‘-‘ || ‘&DATE’ DATEE

FROM   EMPLOYEES

WHERE   ROWNUM <=

SUBSTR (

LAST_DAY (

TO_CHAR (TO_DATE (‘&DATE’, ‘Mon-YYYY’), ‘dd-mon-yyyy’)),1, 2 )

 

Logic

 

User will give the input

Query -2

Calculate the last date of the Month and display it with the Rownum

Query-1

Get the date, month and year as user input and then process the last day and display

 

 

 

Cumulative Amount Calculation

 

Query 

 

SELECT department_id, salary, SUM(salary) OVER (PARTITION BY department_id) AS total_amount,

SUM(salary) OVER (PARTITION BY department_id ORDER BY department_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_amount

FROM EMPLOYEES;

 

Logic

 

The logic here is the below line which tells to (Partition by) as group by department id. The next is the below line calculates the row and the preceding sum of values

SUM(salary) OVER (PARTITION BY department_id ORDER BY department_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

 

 

Finding count of a letter

 

SELECT   CASE

WHEN LENGTH (REPLACE (:input, ‘a’, ”)) IS NULL

THEN

LENGTH (:input)

ELSE

LENGTH (LOWER (:input))

– LENGTH (REPLACE (LOWER (:input), ‘a’, ”))

END

|| ‘ a’

“Name Contains”

FROM   DUAL;

 

Logic

 

We Replace the required character with no space and we subtract the total length from the replaced length.

About pacesettergraam

A good and realistic person

Posted on April 24, 2013, in Uncategorized. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: