Anda di halaman 1dari 14

Ejemplos con base de datos Summit Sporting

Goods
Using Summit Sporting Goods database write a SELECT statement
for:
1. Display all information held about regions.
Select *
from s_region;
2. Display all information held about departments.
Select *
from s_dept;
3. Display departments names in the S_DEPT table.
Select name
from s_dept;
4. Display job titles in the employee table.
Select title
from s_dept;
5. Display the department ID, and first and last name for all
employees in department 41.
Select dept_id, first_name, last_name
from s_emp;
where dept_id = 41;
6. Display the employee ID, first and last name, and salary for
employee 1.
Select id, first_name, last_name, salary
from s_emp
where id = 1;
7. Display the first and last name, and title for the employee named
"Magee".
Select first_name, last_name, title
from s_emp
where last_name = 'Magee';
8. Display the last name, user ID, and start date for all employees
hired on March 4, 1990.
Select last_name, userid, start_date
From s_emp
Where start_date = '04-mar-90';
9 .Display the first and last name and start date of employees whose
start date is in between may 9, 1991 and June 17, 1991, inclusive.
Select first_name, last_name, start_date
From s_emp
Where start_date BETWEEN '09-may-91' AND '17-jun-91';
10 .Display the first and last name and salary of employees making a
salary between $1,500 and $3,000 per month.
Select first_name, last_name, salary
From s_emp
Where salary > 1500 and salary < 3000;
11. Display the department ID, name, and the region ID of
departments not in region 4 or 5.
Select id, name, region_id
From s_dept
Where region_id IN (4,5);
12. Display the last name, salary and department ID of employees in
department 42 who earn at least $1,200.
Select last_name, salary, dept_id
From s-emp
Where dept_id = 42 and salary >= 1200;
13. Display the last name, salary, department ID, and title of
employees in department 41, and display anyone who is a "Stock
Clerk".
Select last_name, salary, dept_id, title
From s_emp
Where dept_id = 41 or title = 'Stock Clerk';
14. Display the last name of employees who have the same title as
Smith.
Select last_name
From s_emp
Where title IN (select title
From s_emp
Where last_name = 'Smith');
15. Display the last name, job title and department ID for all
employees in the same department as Biri.
Select last_name, title, dept_id
From s_emp
Where dept_id IN (select dept_id
From s_emp
Where last_name = 'Biri');
16. Display the employee ID, last name, and department ID for all
employees who work in a department with any employee named
Patel.
Select id, last_name, dept_id
From s_emp
Where dept_id IN (select dept_id
From s_emp
Where last_name = 'Patel');
17. Display the customer ID, name and credit rating for all customers
that are located in North America region or have Nagayama as their
sales representative.
Select c.id , c.name, c.credit_rating
From s_customer c, s_emp e, s_region r
Where ( c.region_id = r.id and c.sales_rep_id = e.id)
AND ( r.name = 'North America' or e.last_name =
'Nagayama');
18. Display employee ID, last and first name, department ID, and
department name for all employees.
Select e.id, last_name, first_name, d.id, name
From s_emp e, s_dept d
Where dept_id = d.id;
19. Display department ID, department name, region ID, and region
name for all departments.
Select d.id, d.name, r.id, r.name
From s_dept d, s_region r
Where region_id = r.id;
20. Display department ID, department name, region ID, and region
name for departments10, 31 and 41.
Select d.id, d.name, r.id, r.name
From s_dept d, s_region r
Where region_id = r.id
AND d.id IN (10,31,41);
21. Display the distinct job titles.
Select distinct title
From s_emp;
22. Display each unique department name with a heading of
"Diffrerent Departments".
Select distinct name "Different Departments"
From s_dept;
23. Display all employee names with a heading of "EMPLOYEES".
Select last_name EMPLOYEES
From s_emp;
24.Display the distinct department names and Ids of those
departments whose Ids are not in 30 to 39 range.
Select distinct id, name
From s_dept
Where id NOT BETWEEN 30 AND 39;
25. Display the last name, department ID, and start date for
employees whose start date was not in 1991.
Select last_name, dept_id, start_date
From s_emp
Where start_date NOT BETWEEN '01-jan-91' AND '31-dec-91';
26. Display the department ID, name, and region ID of departments
not in region 4 or 5.
Select id, name, region_id
From s_dept
Where region_id NOT IN (4,5);
27. Display the last name of employees whose last name begin with
"M" .
Select last_name
From s_emp
Where last_name LIKE 'M%';
28. Display the last name and start date for employees who started
with the company in 1991.
Select last_name, start_date
From s_emp
Where start_date LIKE '%91';
29. Display the last name and user ID of employees that an "a" in
their user ID.
Select last_name, userid
From s_emp
Where userid LIKE '%a%';
30. Display the last name of employees whose last name contains
five letters, begins with an "S', and ends with an "h".
Select last_name
From s_emp
Where last_name LIKE 'S ___h';
NOTA: Se escribe el smbolo de "underscore" por cada letra. En el
ejercicio hay tres smbolos de "underscore" unidos.
31. Display the customer ID, name, and credit rating of customers
who do not have a sales representative.
Select id, name, credit_rating
From s_customer
Where sales_rep_id IS NULL;
32. Display the last name, title, and commission percent for
employees who earn a commission percent.
Select last_name, title, commission_pct
From s_emp
Where commission_pct IS NOT NULL;
33. Display the last names and salaries of employees in department
45 in ascending order by salary.
Select last_name, salary
From s_emp
Where dept_id = 45
Order by salary;
34. Display the region ID, department ID, and name of each
department in order by region ID and then by department ID.
Select region_id, id, name
From s_dept
Order by region_id, id;






Operaciones aritmticas en consultas
Operaciones aritmticas
Dentro de un SELECT podemos proyectar resultados que provienen de
un clculo relacionado a uno o varios campos de la base de datos
usando operaciones aritmticas.
Las operaciones fundamentales son sumar (+), restar (-), dividir (/ ) y
multiplicar (* ).
Veamos los siguientes ejemplos usando la base de datos de Summit
Sporting Goods:
SELECT last_name, salary*12
FROM s_emp:
Esa consulta muestra el apellido y el sueldo anual de los empleados.

SELECT last_name, salary+200
FROM s_emp;
Esa consulta muestra el apellido y el sueldo mensual aumentndole
$200.

SELECT last_name, commision_pct*salary/100
FROM s_emp
WHERE title= Sales Representative;
Esa consulta presenta el apellido y lo que gana el empleado en comisin
para los empleados que son vendedores.
FUNCIONES
Hay tres clases de funciones numricas. Estas se clasifican como:
1- "single values"
2- "group of values"
3- "lists of values"
"Single values"
Aqu se consideran las operaciones aritmticas tales como sumar (+),
restar (-), dividir (/ ) y multiplicar (* ).
Tambin se consideran otras tales como la de valor absoluto
(ABS(valor)), raz cuadrada (SQRT(valor)), etc. En el Captulo 6 -
"Playing the Numbers", del texto encontramos muchas ms.
Veamos ejemplos usando algunas funciones tomando en cuenta la base
de datos de Summit Sporting Goods:
SELECT last_name, ROUND(commision_pct*salary/100,2)
FROM s_emp
WHERE title= Sales Representative;
Esa consulta presenta el apellido y lo que gana el empleado en comisin
para los empleados que son vendedores redondeando a dos lugares
decimales la ganancia de la comisin.
SELECT last_name APELLIDO,
NVL(commision_pc,0) COMISION
FROM s_emp;
Esa consulta presenta el apellido y el porciento comisin para todos los
empleados y cuando no son son vendedores (que tienen valor nulo
(NULL) en commision_pct asigna el valor cero(0).
SELECT last_name APELLIDO, TRUNC(SYSDATE - start_date) DIAS
FROM s_emp;
Esa consulta presenta el apellido y la cantidad de das que los
empleados llevan en la empresa. La palabra reservada SYSDATE trae la
fecha actual del sistema (la fecha de ese dia).
SELECT last_name APELLIDO, SYSDATE - start_date DIAS
FROM s_emp;
Esa consulta presenta el apellido y la cantidad de das que los
empleados llevan en la empresa. Si te fijas hemos omitido la funcin
TRUNC, esto traer como consecuencia que el resultado tenga lugares
decimales en la cantidad de das dependiendo de las horas que hayan
transcurrido del da en que hacemos la consulta. La cantidad de horas se
presentarn en fraccin decimal.
Por ejemplo si nos presenta 23.5 das, quiere decir que han pasado 23
das y 12 horas (que equivale al .5 de un da)
SELECT last_name APELLIDO,
TRUNC((SYSDATE-start_date)/7) SEMANAS,
MOD(TRUNC(SYSDATE-start_date),7) DIAS
FROM s_emp;
Esa consulta presenta el apellido y la cantidad de SEMANAS das que
los empleados llevan en la empresa. La funcin MOD da como resultado
el residuo que queda al dividir (SYSDATE-start_date) por 7.

"Group of values" - Funciones agrupadas
Estas funciones ofrecen resultados que se aplican a los valores de una
columna en total o parte de ellos. Son funciones para obterner el
promedio, un contador, valor mximo,etc
Veamos ejemplos usando algunas funciones tomando en cuenta la base
de datos de Summit Sporting Goods:
SELECT AVG(salary)
FROM s_emp;
En este ejemplo se proyecta el promedio de los sueldos de todos los
empleados.
SELECT MAX(salary)
FROM s_emp;
En este ejemplo se proyecta el sueldo mayor de todos los empleados.
SELECT COUNT(*)
FROM s_emp;
Aqu se cuenta cuntas filas (rcords) de empleados hay en la tabla
s_emp.
SELECT SUM(salary)
FROM s_emp;
Aqu vemos el total al sumar los sueldos de todos los empleados.
SELECT COUNT(*) "Cantidad de empleados",
AVG(salary) "Promedio de sueldos",
SUM(salary) "Total de sueldos"
FROM s_emp;
En este ejemplo obtenemos cuntos empleados hay, cual es el sueldo
promedio y a cunto asciende el total de los sueldos.
SELECT COUNT(DISTINCT title), COUNT (*)
FROM s_emp;
En este ejemplo tenemos cuntos puestos (titles) distintos hay y cuntos
empleados hay en total.
SELECT title PUESTOS, COUNT(tilte) "CANTIDAD DE EMPLEADOS"
FROM s_emp
GROUP BY title;
Este ejemplo muestra los puestos (title) contando cuntas personas
estn en los diferentes puestos, esto ltimo lo hace la clasula GROUP
BY.
SELECT title PUESTOS, COUNT(tilte) "CANTIDAD DE EMPLEADOS"
FROM s_emp
GROUP BY title
HAVING COUNT(title) >2;
Este ejemplo muestar los puestos (title) contando cuntas personas
estn en los diferentes puestos, esto ltimo lo hace la clasula GROUP
BY. Adems solo se expondrn los puestos donde hay ms de dos
personas con ese puesto, esto lo controla la clasula HAVING
COUNT(title) >2.




Operaciones alfanumricas en consultas
OPERACIONES
La operacin concatenar quiere decir unir dos cadenas de
caracteres. Aqu se usan los smbolos || para indicar la
concatenacin.
Ejemplos:
SELECT last_name||first_name
FROM s_emp;
En este ejemplo se produce una columna pegando el apellido al
nombre. (no deja espacio en blanco entre ambos, por ejemplo
mostrara el nombre as : RiveraJos )
SELECT last_name||','||first_name
FROM s_emp;
En este ejemplo se produce una columna con el apellido y el
nombre. (separndolos por coma, por ejemplo mostrara el nombre
as :
Rivera,Jos )
SELECT last_name||' '||first_name
FROM s_emp;
En este ejemplo se produce una columna con el apellido y el
nombre. (separndolos con un espacio en blanco, por ejemplo
mostrara el nombre as : Rivera Jos )
FUNCIONES
Respecto a funciones para manejar cadenas de caracteres hay una
gran variedad. Lea el Captulo 5 -"Getting text information and
changing it" del libro de texto. A continuacin mostraremos el uso
de algunas solamente.

Veamos ejemplos usando algunas funciones tomando en cuenta la
base de datos de Summit Sporting Goods:
SELECT last_name, LENGTH(last_name)
FROM s_emp
WHERE id =10;
En este ejemplo el resultado es el apellido del empleado (que es
Havel) y la cantidad de caracteres que es 5.
SELECT last_name
FROM s_emp
WHERE LENGTH(last_name) =5;
El ejemplo nos proyecta los apellidos que tienen 5 caracteres.

SELECT LOWER(last_name)
FROM s_emp;
Aqu se presentan los apellidos en letras minsculas.

SELECT last_name, first_name
FROM s_emp
WHERE UPPER(last_name)='PATEL';
En este caso nos proyecta el apellido y nombre de los empleados
que tengan apellido 'PATEL', sin importar como el dato est en la
base de datos. Esto es puede estar 'PATEL', 'Patel', 'patel' o de
cualquier otra forma.
Igual que las funciones LOWER y UPPER hay otra de INITCAP.

La funcin SUBSTR permite obtener una subcadena de caracteres a
partir de una cadena de caracteres. Por ejemplo:
SELECT SUBSTR(last_name, 3,2)
FROM s_emp
WHERE id = 10;
En este ejemplo se toman 2 caracteres del apellido del empleado 10
empezando en el caracter # 3. El empleado 10 tiene apellido 'Havel',
por lo tanto el resultado es 've'.
La funcin RPAD justifica a la derecha, veamos el ejemplo siguiente:
SELECT RPAD(last_name || ','|| first_name, 20,'.') NOMBRE,
id ID
FROM s_emp
WHERE id IN (3,6,7);

Aqu se proyecta la concatenacin " last_name || ','|| first_name"
usando 20 espacios, si esa concatenacin no ocupa 20 espacios se
rellena co puntos. Veamos que obtenemos de salida:
NOMBRE______________ __ID
Nagayama Midori................. 3
Urguhart,Molly...................... 6
Menchu,Roberta................... 7

La funcin INSTR busca la posicin de una subcadena en una
cadena. Veamos varios ejemplos:
SELECT INSTR(last_name, 'a')
FROM s_emp
WHERE id IN (3,6,7);
Aqu se quiere saber en que posicin se encuentra la letra 'a' en
esos apellidos. La respuesta es 2, 6 y 0. En 'Nagayama' cuenta la
primera 'a', en 'Menchu' la respuesta es 0 por que no hay 'a'.

Anda mungkin juga menyukai