clase27del10

download clase27del10

of 4

Transcript of clase27del10

  • 7/25/2019 clase27del10

    1/4

    >Listar aquellos proveed q provean a fabricas de la ciudad de san luis

    hecho por mi y no se si funca :) :

    select proveedfrom Proveedores Natural Join Pedidoswhere codCiudad= SL and codCiudad IN

    (select codCiudadfrom Fabricawhere ciudad= 'san luis')

    made in profe, con alternativa de dos ciudades:

    select pr.#P, nombrePfrom Proveedores as pr, Pedidos as Pewhere pr.#P=Pe.#P and Pe.#F IN

    (select #Ffrom Fabricawhere ciudad IN ("Haedo", "Moron") )

    >Obtener el cod de articulo para los pedidos q hayan sido suministrados con un valor superior al promedio.

    by me:

    select codArtfrom Pedidoswhere valor > (select avg(valor)

    from Pedidos)

    -------select codArt, max(avg (valor)) (select avg (cant)

    from ped)

    calculando el promedio por cada articuloselect cafrom pedgroup by cahaving avg(cant) > (select avg(cant)

    from ped)

    IMPORTANTE USAR GROUP BY cuando hay una funcion en el select

    Listar art cuya cantidad promedio solicitada sea la mayor

    select cafrom pedgroup by cahaving avg (cant) >= all (select avg (cant)

    from pedgroup by ca)

  • 7/25/2019 clase27del10

    2/4

    la tabla seria algo asi

    xx / xx / art / cant

    xx / xx / 1 / 10xx / xx / 2 / 05xx / xx / 4 / 10xx / xx / 4 / 25xx / xx / 1 / 50

    forma de hacerlo con view

    create view Prom as(select ca, avg(cant) as promfrom pedgroup by ca)

    select cafrom promwhere prom = (select max (prom)

    from Prom)

    > Listar el empleado con sueldo maximo

    nota: cuando voy a listar el max de algo, no lo puedo hacer en un solo select.

    Emp (leg, nom, sueldo, sector)

    select leg, nomfrom empwhere sueldo IN (select max (sueldo)

    from emp)

    Listar a todos los empleados que tengan un sueldo por lo menos mayor en un 30% al promedio del sector maestranza.

    Select leg, nomfrom empwhere sueldo >= any (select avg (sueldo) * 1.30

    from empwhere sector = 'maestranza')

    Listar al sector q gana mas $$

    Create view sueldoxsector as(select sector, sum(sueldo) as sumasueldo

    from empgroup by sector)

    select sectorfrom sueldoxsectorwhere sumasueldo in (select max (sumasueldo)

    from sueldoxsector)o en vez del in:where sumasueldo >= all (select sumasueldo

    from sueldoxsector)

  • 7/25/2019 clase27del10

    3/4

    -------------------------------------

    select sectorfrom empgroup by sectorhaving sum(sueldo)>=all (select sum(sueldo)

    from empgroup by sector)

    nota: dijo q por ahi toma uno asi en el parcial :O

    ----------------------------------------

    Divisiones! :

    Listar a los alumnos q aprobaron todas las materias:

    ALU1234

    Mat12

    EXA A / M / N1 / 1 / 21 / 2 / 42 / 1 / 22 / 2 / 22 / 1 / 23 / 1 / 23 / 3 / 4

    3 / 1 / 6

    Select ca, nomfrom aluwhere not exists (select *

    from mat where

    not exists (select *from exawhere exa.ca=alu.ca andexa.cm = mat.ca andnota >= 4 ) )

    Primer select: es lo que listo (por ejemplo alum de ciudad de moron)2do: son el todo (como decir 'todos los articulos' en el enunciado)3ro: son la vinculacion. Si hay una condicion q no modifica ni al 1ro ni al 2do,va aca.

    > cuantas materias hay del 1er al 3er ao

    select alu.ca, alu.nomfrom alu, exa, mat

  • 7/25/2019 clase27del10

    4/4

    where alu.ca=exa.ca and exa.cm=mat.cm and nota>=4 and alu.loc='moron' and mat.ao Listar a todos los proveed que le proveen biromes azules a la ciudad de Rosario

    ----------------------------------------Tarea :)----------------------------------------

    Personas (dni, nom, sexo, fNacPadres (dniP, dniM)Casado (dni, dniC) {dnic--> dni del conyugue}

    >Para cada Juan Perez listar su dni y el dni y nombre de sus nietos.

    >Para cada Juan Perez listar su dni y el dni y nombre de sus abuelos maternos.

    Hacer en SQL y en Algebra.Este tipo de consulta sirve para ver arboles de estructura.