Documentos de Académico
Documentos de Profesional
Documentos de Cultura
--MOSTRAR LOS NOMBRES DE CLIENTE QUE HICIERON RESERVA de que ciudad vienen
select * from CLIENTE
select * from RES_REG_COM
select * from CIUDAD
--PRODUCTO CARTESIANO
--Mostrar los tipos de habitacion que no han sido reservados por clientes
--de Arequipa
select TIPOHAB.nomtipohab, HABITACION.nrohab,RES_REG_COM.codreserva,
CLIENTE.nomclie, CLIENTE.apepclie, CIUDAD.nomciudad
from TIPOHAB INNER JOIN HABITACION
on TIPOHAB.codtipohab = HABITACION.codtipohab
left join RES_REG_COM
on HABITACION.nrohab = RES_REG_COM.nrohab
left JOIN CLIENTE
on RES_REG_COM.codclie = cliente.codclie
left JOIN CIUDAD
on CLIENTE.codciudad= CIUDAD.codciudad
where RES_REG_COM.codreserva is null
or ciudad.nomciudad <> 'Arequipa'
--FUNCIONES AGREGADAS
USE HOTEL_5ESTRELLAS
--COUNT ()---> CUENTA LOS REGISTROS , COUNT (CAMPO) CUENTA A NIVEL DEL CAMPO
select COUNT(fechreser)
from ciudad inner join cliente
on ciudad.codciudad = cliente.codciudad
inner join res_reg_com
on cliente.codclie = res_reg_com.codclie
where ciudad.nomciudad = 'Arequipa'
SELECT SUM(RESREGCOM_SERV.cantidad*SERVICIOS.precioser)
AS 'monto reserva R001'
FROM RESREGCOM_SERV INNER JOIN SERVICIOS
ON RESREGCOM_SERV.codserv=SERVICIOS.codserv
WHERE RESREGCOM_SERV.codreserva='R001'
AND RESREGCOM_SERV.fechped BETWEEN '24/09/2021' AND '25/09/2021'
--por codigociudad
select codciudad, count(*)
from CLIENTE
group by codciudad
--CUANTOS SERVICIOS HAY POR CADA TIPO Y CUAL ES EL MONTO DE CADA TIPO
select * from SERVICIOS
select * from TIPOSERV
SELECT TIPOSERV.nomtiposer ,COUNT (*) as 'cantidad', SUM(SERVICIOS.precioser) as
'total'
FROM SERVICIOS INNER JOIN TIPOSERV
ON SERVICIOS.codtiposer = TIPOSERV.codtiposer
GROUP BY TIPOSERV.nomtiposer
--CUANTOS SERVICIOS HAY POR CADA TIPO Y CUAL ES EL MONTO DE CADA TIPO, DE
AQUELLOS
--SERVICIOS QUE NO SEAN 'ALMUERZO'
SELECT TIPOSERV.nomtiposer ,COUNT (*) as 'cantidad', SUM(SERVICIOS.precioser) as
'total'
FROM SERVICIOS INNER JOIN TIPOSERV
ON SERVICIOS.codtiposer = TIPOSERV.codtiposer
WHERE SERVICIOS.nomserv <> 'Almuerzo'
GROUP BY TIPOSERV.nomtiposer
--Haga una consulta que muestre el monto total de maquinaria por proyecto
select Maquinaria.ubicacion, sum(Maquinaria.costo_referencial)
from Maquinaria
group by Maquinaria.ubicacion
--Haga una consulta que muestre el monto total por maquinaria asignada
select asignacion.cod_maq,sum(Maquinaria.costo_referencial)
from Maquinaria inner join asignacion
on Maquinaria.cod_maq = asignacion.cod_maq
group by asignacion.cod_maq
--Haga una consulta que muestre cuantas personas estan asignadas por maquina
SELECT MAQUINARIA.cod_maq, COUNT(*) AS 'Cantidad'
FROM MAQUINARIA INNER JOIN asignacion
ON MAQUINARIA.cod_maq=ASIGNACION.cod_maq
GROUP BY MAQUINARIA.cod_maq
--Haga una consulta que muestre cuantas maquinas hay por proyecto, y cuanto es
su total de costo
SELECT Maquinaria.ubicacion, COUNT(*) as
'Cantidad',sum(Maquinaria.costo_referencial) as 'Monto total'
FROM MAQUINARIA
GROUP BY Maquinaria.ubicacion
--
use Minera
--diga el nombre completo del personal, que este asignado en mas de una
maquinaria
select top 1 personal.cod_personal, personal.nombres,personal.apellidopat,
count(personal.cod_personal)
from personal inner join asignacion
on asignacion.cod_personal = personal.cod_personal
group by personal.cod_personal,personal.nombres,personal.apellidopat
order by count(personal.cod_personal) desc
--funcion concat
--ejm Juan dominguez es ayudante de perforacion
update personal
set apellidopat= 'Perez'
where cod_personal= 'P05'
--sub string EXTRA CADENAS DE TEXTO INDICADAS
--generar una contraseña a cada personal
-- 2 primeras letras del nombr, 2 primeras letras del apellidopat, numero del
codigo del personal
select cod_personal, nombres, apellidopat,
concat(substring (nombres,1,2),
SUBSTRING(apellidopat,1,2),SUBSTRING(cod_personal,2,2))
from personal
select concat(UPPER(apellidopat),',',lower(nombres))
from personal
select apellidopat,
concat(substring (apellidopat,1,len(apellidopat)-3),
UPPER (substring (apellidopat,len(apellidopat)-2,1)),
LOWER (substring (apellidopat,len(apellidopat)-1,1)),
UPPER (substring (apellidopat,len(apellidopat),1)))
from personal
-- de la fechga de mañana sumale 108 horas, que fecha sera despues de las 108
horas?
select dateadd(hour,108, getdate()+1)
select dateadd(hour,108,dateadd(day,1,getdate()))
select datediff(day,'19/06/2021','04/11/2021')
--el 19/06/2021 empezo la produccion y termino el 04/11/2021
--cuantas jpras duro?
select datediff(hour,'19/06/2021','04/11/2021')
select dateadd(day,-56,'04/11/2021')
select cod_personal,round(len(cod_personal)/2,0)
from personal
use HOTEL_5ESTRELLAS
--IIF
use Minera
select* from Maquinaria
use Minera
--mostrar las 2 maquinarias con costo mas bajo asignadas a Arcata o Ares
--al puesto de perforista
select top 2 Maquinaria.descripcion,Maquinaria.costo_referencial, personal.puesto
from Maquinaria inner join asignacion
on Maquinaria.cod_maq = asignacion.cod_maq
inner join personal
on asignacion.cod_personal = personal.cod_personal
--Mostrar todas las maquinas de Ares, cuyo costo referencial este debajo del
--promedio
select * from Maquinaria
where ubicacion ='Ares' and
costo_referencial < (select avg(costo_referencial)from Maquinaria)
select *
from Maquinaria
where ubicacion ='Ares'
and exists (select * from asignacion where cod_maq ='x020') --consulta de
condicion , si existe un dato
select *
from Maquinaria
where not exists (select * from asignacion where cod_maq ='x020')
--FUNCION DEFINIDA POR EL USUARIO
USE Minera
select * from Maquinaria
--CREAR UNA FUNCION QUE DADO UN TIPO DE MAQUINARIA
--MUESTRE EL TOTAL DE COSTO REFERENCIAL
create function F_TOTXMAQ (@TEXTO1 VARCHAR(30), @TEXTO2 VARCHAR(30))
RETURNS MONEY
AS
BEGIN
declare @var1 as varchar(30)
declare @var2 as varchar(30)
declare @resultado as money
END
--PRUEBA DE LA FUNCION
SELECT DBO.f_TOTXMAQ ('Amplificador','Generador')
RETURN @RESULTADO
END
--HACER UNA FUNCION QUE DIGA CUANTOS DIAS FALTA PARA SU PROXIMO CUMPLEAÑOS
create function f_diacumpl(@text1 date)
returns int
as
begin
declare @fecha as int
set @fecha = (select datediff(day,getdate(),@text1))
return @fecha
end
---------------------------------------------------
create function F_CUMPLE (@fechaCumple date)
returns int
as
begin
declare @dias as int
RETURN @dias
end
--
select * from f_ubi('Arcata')
update personal
set nombres=@nom, apellidopat=@ape, puesto=@pue
where cod_personal = @cod
update Maquinaria
set costo_referencial= @costref, ubicacion = @ubi
select costo_referencial, iif(ubicacion='Ares', costo_referencial*0.10,0)
from Maquinaria
if @var = 0
begin
insert into personal
values (@cod, @nom, @ape, @pue)
end
else
print 'Personal existente'
--prueba
execute pa_insertarnuevopersonal 'P09','Clever','Machaca','Supervisor'
select * from personal