Está en la página 1de 20

Consultas y ms Consultas!

[quote=[u]Ejemplos para NORTHWIND(Base de Datos ejemplo del


SQL Server 2000)]
/*--------------------------------------*/
/*seleccionamos y concatenamos apellido y nombre, ttulo de
cortesa<solo cuando sea igual a (mr. o dr.)>
, y la fecha entre un rango determinado */
select lastname+','+firstname,titleofcourtesy,birthdate
from employees where (birthdate between '1937/1/1' and
'1958/1/1')
and ((titleofcourtesy = 'dr.')or (titleofcourtesy = 'mr.'))

/*--------------------------------------*/
/*obtenemos fecha y hora del sistema*/
select getdate()
/*--------------------------------------*/
/*seleccionamos todos los campos de los empleados y lo
ordenamos por fecha de cumpleaos de forma ascendente*/
select * from employees order by birthdate asc
/*--------------------------------------*/
/*seleccionamos todos los campos de los empleados en que el
apellido este dentro de un rango de letras*/
select * from employees where lastname like '[c-j]%'
/*--------------------------------------*/
/*seleccionamos todos los campos de los empleados en que el
ttulo de cortesa no sea <Mr.> o <Dr.>*/
select * from employees where titleofcourtesy not
in('Mr.','Dr.')
/*--------------------------------------*/

/*seleccionamos todos los campos de los empleados en que el


ttulo de cortesa sea <ms.> */
select * from employees where titleofcourtesy = 'ms.'
/*--------------------------------------*/
/*seleccionamos la profesin, el nombre concatenado al
ttulo de cortesa,
el apellido y la direccin concatenado con la ciudad
ordenado por la direccion de manera descendente*/
select title Ttulo,
firstname+'('+titleofcourtesy+')' Nombre,
LastName Apellido,
address+'('+city+')' Direccin
from employees order by address desc
/*--------------------------------------*/
/*seleccionamos el apellido concatenado con el nombre y
cuidad concatenado con pais ordenado por el
cdigo del empleado de manera descendente*/
select lastname+','+firstname ApellidoyNombre,
city+'('+country+')' CiudadyPais
from employees
where country = 'usa' order by employeeID desc

/*-------------------------------------*/
/*seleccionamos los nombre de las compaias donde la regin
sea igual a <NULL>*/
select companyname NombredelaCompaa,
region from customers
where region is NULL
/*-------------------------------------*/
/*al apellido le concatenamo el ttulo de cortesa solo
cuando este es <Mr.> o <Ms.>*/
select lastname+'['+TitleOfCourtesy+']' NombreyTtulo

from employees where TitleOfCourtesy in ('Mr.','Dr.')


/*-------------------------------------*/
/*al apellido le concatenamo el ttulo de cortesa solo
cuando este NO sea <Mr.> o <Ms.>*/
select lastname+'['+TitleOfCourtesy+']' NombreyTtulo
from employees where TitleOfCourtesy NOT IN ('Mr.','Dr.')
/*-------------------------------------*/
/* vamos a convertir la fecha en formatos cortos ddmmaaaa ,
aaaamm */
select convert (varchar(11),birthdate,110) from employees
select convert (varchar(8),birthdate,111) from employees
/*-------------------------------------*/
/*las persona que nacieron antes de 1/1/95*/
select birthdate Cumpleaos from employees
where birthdate < '1955-01-01'

/*--------------------------------------*/
/*Utilizamos Substring para cortar el string*/
select title Ttulo, substring(title,0,6) Ttulo
from employees
/*---------------------------------------*/
/*Cortamos las fechas de cumpleaos y las convertimos a
char*/
select substring(convert(varchar(4),Birthdate,0),1,4)mes,
substring(convert(varchar(7),Birthdate,0),4,3)da,
substring(convert(varchar(12),Birthdate,0),7,5)ao
from employees
/*---------------------------------------*/

/*seleccionamos la primera mitad de los empleados*/


select top 50 percent * from employees
/*---------------------------------------*/
/*contamos la cantidad de empleados*/
select count (employeeid) from employees
/*----------------------------------------*/
/*seleccionamos apellidos y renombramos lo ttulos de
cortesa para algunos casos*/
select lastname Apellido, case [titleofcourtesy]
when 'Ms.' then 'Seora'
when 'Dr.' then 'Doctor'
else 'Otros'
end Sexo
from employees

Lab 5:Base de Datos Ejemplo


(aqu le explico como montar la base y les doy
un par de consultas de ejemplo)

Para poder montar la base de datos de


ejemplo(lab5) deben crear una nueva base de datos.
La manera ms sencilla es desde el Administrador
Corporatio, le damos click derecho sobre la
carpeta Bases de Datos y creamos un Nueva Base de
Datos.

Debe tener el mismo nombre que la base ejemplo asi


que pongan "lab5".

Luego vamos a las zolapas de Archivos de Datos y


de Registro de Transacciones, ahi deben darle la
ruta donde se va a guardar la base, una vez
seleccionado aceptamos.

Uma vez creada la base de datos desconectamos el


motor desde el cono de Administracin de
Servicioscon click derecho... Detener.

Ahora solo debemos sobreescribir los archivos


.data y .log que ubicamos hace un rato con los

archivo que aqui les traigo!


Ahi nomas desde el cono de Administracin de
Servicioscon click derecho... Iniciar.

descargar
por Rapidshare

por Archivos Backup

[quote=[u]Ejemplos para LAB5(Base de Datos ejemplo subida


por m)]
/*seleccionamos todos los telefonos que comiencen con
caracterstica <03722>*/
select telefono, substring(telefono,0,6) caracteristica
from apuestas where substring(telefono,0,6)= 03777
/*_______________________________________________________*/

/*idem al ejercicio anterior pero utilizamos la sentencia


<like> */
select telefono, substring(telefono,0,6) caracteristica
from apuestas where[ color=fuchsia]substring(telefono,0,6)
like '%03777%'
/*_______________________________________________________*/

/*seleccionamos todos los telefonos que terminen en <91> */


select count(telefono) from apuestas
where substring(telefono,11,2)= 91

/*_______________________________________________________*/

/*seleccionamos el da de la fecha obtenida del sistema*/


select datepart(d,getdate())
/*_______________________________________________________*/

/*seleccionamos el da de la fecha determinada*/


select datepart(d,'2/3/2007')
/*_______________________________________________________*/

/*seleccionamos el mes de la fecha determinada*/


select datepart(m,'2/3/2007')
/*_______________________________________________________*/

/*seleccionamos el ao de la fecha determinada*/


select datepart(yy,'2/3/2007')
/*_______________________________________________________*/

/*seleccionamos fecha determinada y le incrementamos cinco


das*/
select dateadd(day,5,'2/3/2007')
/*_______________________________________________________*/

/*seleccionamos fecha determinada y le incrementamos dos

meses*/
select dateadd(month,2,'2/3/2007')
/*_______________________________________________________*/

/*seleccionamos fecha determinada y le incrementamos tres


aos*/
select dateadd(year,3,'2/3/2007')
/*_______________________________________________________*/

/*nacidos entre las 13 y 19hs del 19/9/1980*/


select * from apuestas where (FECHANACIMIENTO
between '19/9/1980 00:00:00.000' and '19/9/1980
13:00:00.000')
/*_______________________________________________________*/

/*nacidos entre 19/09/1985 y cinco dias despues(con


dateadd)*/
select * from apuestas
where (fechanacimiento between '19/9/1985'
and dateadd(day,1,'19/9/1985'))
/*_______________________________________________________*/

/* cambiar los codigos de zonas por NORTE, SUR,etc*/


select *, case [ZONA]
when 1 then 'Norte'
when 2 then 'Sur'
when 3 then 'Oeste'
when 4 then 'Este'
end as ZONA
from apuestas

/*_______________________________________________________*/

/* calcular el maximo y el minimo de los montos*/


select min(monto) mnimo,max(monto) mximo from apuestas
/*_______________________________________________________*/

/*cual fue la ultima apuesta y la primera apuesta*/


select max(fapuesta) ultima,min(fapuesta) primera from
apuestas
/*_______________________________________________________*/

/*seleccionar nombre, apellido y telfono donde el telefono


comience con <45>*/
select nombre,apellido,telefono from apuestas
where substring(telefono,7,2)
like '%45%'
/*_______________________________________________________*/

/*seleccionar nombre, apellido, telfono y si el tel.


comienza con <03722>
entonces es de <Bella Vista> y si no es <Otros>*/
select nombre,apellido,telefono, case
substring(telefono,0,6)
when 03777 then 'Bella Vista'
else 'Otros'
end as Nombre from apuestas
/*_______________________________________________________*/

/*segn el sexo anteponer al nombre y al apellido el ttulo


de cortesa
tambien seleccionar telfono,monto,ciudad mientras que la
fecha de nacimiento
sea menor a <01/01/1985>*/
/*ltrim y rtrim quita espacios en blanco a izquierda y
derecha respectivamente*/
select case ltrim(rtrim(sexo))
when 'F' then 'Seora'
when 'M' then 'Seor'
end +' '+ ltrim(rtrim(nombre))+' '+ltrim(rtrim(apellido)),
telefono,monto,ciudad
from apuestas
where fechanacimiento<'01/01/1985'
/*_______________________________________________________*/

/*seleccionamos todos los campos de las tablas cabpedido y


cliente
siempre que los cdigos de clientes sean iguales*/
select * from cabPedido C inner join detallepedido
D on C.idpedido = D.idpedido
/*_______________________________________________________*/

/*obtenemos cuantas apuestas realizo cada cliente*/


select c.nombre Nombre,count(cp.id_cliente) [Cantidad de
Apuestas] from cliente c
inner join cabpedido
cp on c.id_cliente = cp.id_cliente group by c.nombre
/*_______________________________________________________*/

/*obtenemos cuantas unidades de cada producto se vendio*/


select c.nombre Nombre,sum(D.cantidad)Totales from cliente
c
inner join detallePedido D on c.id_cliente = D.id_cliente
group by c.nombre

/*_______________________________________________________*/

/*seleccionar el nombre del cliente, cdigo de producto y


cantidad en el pedido nro. 2*/
select l.nombre, con.prod, con.cant from cliente l inner
join(select id_cliente,D.idproducto prod,D.cantidad cant
from cabPedido c inner join detallePedido D
on c.idPedido = D.idPedido where c.idpedido = 2) con
on l.id_cliente= con.id_cliente
/*_______________________________________________________*/

/*cual es es nombre,monto total del producto que se


vendieron*/
select C1.Nombre,C1.precio,d.cantidad from
detallepedido d inner join (select sum(pp.precio*
dd.cantidad)
Precio,pp.nombre Nombre from
detallepedido dd inner join producto pp
on dd.idproducto = pp.idproducto group by pp.nombre) C1
on d.idproducto = pp.idproducto
order by p.nombre asc
/*_______________________________________________________*/

/*listado de la cantidad vendida de cada producto*/


select idproducto,sum(cantidad)from detallepedido
group by idproducto
/*_______________________________________________________*/

/* monto vendido de cada producto*/


select p.nombre,cant*p.precio monto_tot from producto p
inner join

(select idproducto,sum(cantidad) cant from detallepedido


group by idproducto)q1 on q1.idproducto=p.idproducto
order by monto_tot desc
/*_______________________________________________________*/

/*
nombre direccion, tel, de los proveed
nombre producto, stock y stock minim
de los prod que esten debajo del stock minimo*/
select
c.nombre,c.direccion,c.telefono,d.nombre,d.stock,d.stockmin
imo
from producto d inner join
(select p.idproveedores,p.nombre,p.direccion,p.telefono
from proveedores p)C
on d.idproveedores = C.idproveedores
where stock < = stockminimo
/*_______________________________________________________*/

/*listado de prod cuyo venta total sea superior al


stock
inicial(instisfecho,nombreprod,cantiTotalPedida,valor$,
Stock,preciodeloquesevendio(stock*pesos),diferencia)*/
select 'insatisfecho' Insatisfecho,p.nombre ,(c.cant p.stock)Perdido,
p.stock,p.precio from producto p
inner join
(select d.idproducto,sum(d.cantidad) Cant from
detallepedido d
group by d.idproducto) C
on p.idproducto= c.idproducto
where C.cant > p.stock
/*_______________________________________________________*/

/*listado de todos los proveedores de la provincia de


ctes*/

select p.nombre ,u.provincia from proveedores p


inner joinubicacion u on p.idubicacion = u.idubicacion
where u.provincia = 'Corrientes'
/*_______________________________________________________*/

/*total de proveedores por provincia*/


select u.provincia,count(p.idubicacion) [Cant. Prov]from
proveedores p
inner join ubicacion u on p.idubicacion = u.idubicacion
group by u.provincia
/*_______________________________________________________*/

/*total de proveedores por provincia pero excluir bella


vista*/
select u.localidad,count(p.idubicacion) [Cant. Prov]from
proveedores p
inner join ubicacion u on p.idubicacion = u.idubicacion
group by u.localidad
having u.localidad not in ('bella vist')
/*_______________________________________________________*/

/*listado idpedido,idcliente, fechapedido


nombresucursal,ubicacion(cuidad,procincia(nombre),zona(nomb
rezona))*/
select
Q1.idpedido,Q1.id_cliente,Q1.apellido,Q1.nombre,ub.localida
d + '('+ub.provincia +'),('+ ub.zona +')' Ubicacin from
ubicacion ub inner join
(select
cli.id_cliente,cli.apellido,cli.nombre,cab.idpedido,cli.idU
bicacion from cabpedido cab
inner join cliente cli
on cab.id_cliente = cli.id_cliente)Q1
on ub.idubicacion=Q1.idUbicacion
where ub.localidad not in ('RESISTENCI')

/*_______________________________________________________*/
/*consulta de insersin en la tabla proveedores*/
insert into
proveedores(idproveedores,nombre,direccion,telefono,idubica
cion)
values ('6','Potatoe','Av. Sarmiento 1234','3722-5859','5')

/*_______________________________________________________*/

/*PRODUCTOS DE LOS PROVEEDORES UNILEVER Y FRUTALINDA*/


select p.idproducto ID, p.nombre,prov.nombre proveedor from
producto p
inner join proveedores prov
on p.idproveedores=prov.idproveedores
where prov.nombre like('%UNILEVER')
UNION ALL
select p.idproducto id, p.nombre,prov.nombre proveedor from
producto p inner join proveedores prov
on p.idproveedores=prov.idproveedores
where prov.nombre like('%FRUTALINDA')
/*_______________________________________________________*/

/*lista total de ventas por sucural frutalinda*/


select s.nombre sucursal,q3.proveedor,q3.tot from sucursal
s inner join
(select q1.suc ,Q2.proveedor,sum(cant) tot from
(select idsucursal suc,idproducto p,cantidad cant from
cabpedido c inner joindetallepedido d
on c.idpedido =d.idpedido
)Q1 INNER JOIN
(select p.idproducto id, p.nombre ,prov.nombre proveedor
from producto p inner join proveedores prov
on p.idproveedores=prov.idproveedores
where prov.nombre like('%FRUTALINDA')
)Q2
ON Q1.P=Q2.id
group by q1.suc,q2.proveedor
)q3

on q3.suc=s.idsucursal
order by tot desc
/*_______________________________________________________*/

/*detalle de pedidos sucursal total*/


select ped,s.nombre sucursal,sum(tl) total from sucursal s
inner join
(select
ped,suc,p,p.nombre,cantidad,p.precio,cantidad*p.precio tl
from producto p inner join
(select c.idpedido ped,idsucursal suc,idproducto p,cantidad
from cabpedido c inner join detallepedido d
on c.idpedido =d.idpedido)q1
on q1.p=p.idproducto)q2 on s.idsucursal=q2.suc
group by ped,s.nombre
/*_______________________________________________________*/

/*el pedido cuyo monto es mayor*/


select top 1 ped,s.nombre sucursal,sum(tl) total from
sucursal s inner join
(select
ped,suc,p,p.nombre,cantidad,p.precio,cantidad*p.precio tl
from producto p inner join
(select c.idpedido ped,idsucursal suc,idproducto p,cantidad
from cabpedido c inner join detallepedido d
on c.idpedido =d.idpedido)q1
on q1.p=p.idproducto
)q2
on s.idsucursal=q2.suc
group by ped,s.nombre
order by total desc

/*_______________________________________________________*/

/*ubicaciones relaciones porveedores y clienetes , los de


resistencias*/

Select cli.nombre,ub.localidad,ub.idubicacion from cliente


cli inner join ubicacion ub
on cli.idubicacion=ub.idubicacion
where ub.localidad='RESISTENCI'
group by cli.nombre,ub.localidad,ub.idubicacion
union all
select P.nombre,ub.localidad,ub.idubicacion from
proveedores P inner join ubicacion ub
on P.idubicacion=ub.idubicacion
where ub.localidad='RESISTENCI'
group by P.nombre,ub.localidad, ub.idubicacion[/quote]

También podría gustarte