miércoles, 14 de enero de 2015

Ejercicios sobre Consultas en SQL...





Realizar las siguientes consultas usando la BD del Proyecto...


Consultas:

1. Recuperar el Nombre y Correo Electronico del Cliente que tenga la propiedad con el mayor número de metros cuadrados. No importa el tipo de propiedad.

2. Por Clave de vendedor, recuperar tipo de propiedad, metros cuadrados, valor de venta de las propiedades que aún no se han vendido

3. Todos los datos que se puedan recuperar de las propiedad localizadas en la colonia X

4. Datos completos del comprador que ha adquirido mas propiedades, no importando su valor

5. Lista de los datos relevantes de los locales comerciales en venta

Scripts de prueba para funciones en PostgreSQL...

-- Tabla de prueba

CREATE TABLE serverb
(
  id serial NOT NULL,
  name character varying(20),
  ip character varying(15)
)

-- Funcion generica

CREATE FUNCTION somefunc() RETURNS integer AS $$
<< outerblock >>
DECLARE
    quantity integer := 30;
BEGIN
    RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 30
    quantity := 50;
    --
    -- Create a subblock
    --
    DECLARE
        quantity integer := 80;
    BEGIN
        RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 80
        RAISE NOTICE 'Outer quantity here is %', outerblock.quantity;  -- Prints 50
    END;

    RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 50

    RETURN quantity;
END;
$$ LANGUAGE plpgsql;

-- Ejemplo usando serverb

CREATE FUNCTION recservers() RETURNS SETOF serverb AS $$
    SELECT * FROM serverb;
$$ LANGUAGE SQL;

select * from serverb;


2;"xserver02";"10.10.1.254"

select recservers();
"(2,xserver02,10.10.1.254)"

select * from recservers();

2;"xserver02";"10.10.1.254"

-- Ejemplo generando como resultado una tabla nueva

CREATE FUNCTION query_1 (x int)
RETURNS TABLE(totid int, name text) AS $$
    SELECT id+$1, name FROM serverb;
$$ LANGUAGE SQL;

select * from query_1(10);
12;"xserver02"

-- Ejemplo insertando registros

CREATE FUNCTION insertserver(pid int, pname text, pip text) RETURNS integer AS $$
  BEGIN
insert into serverb values($1, $2, $3);
RETURN 1;
  END;
$$ LANGUAGE "plpgsql"

select insertserver(3,'iw','1.1.1.1');