viernes, 10 de julio de 2009

Caso Practico: Venta de Calzado



SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb`;

-- -----------------------------------------------------
-- Table `mydb`.`Cliente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Cliente` (
`idCliente` CHAR(5) NOT NULL ,
`Nombre` VARCHAR(20) NOT NULL ,
`Apellidos` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`idCliente`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Pedido`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Pedido` (
`idPedido` CHAR(5) NOT NULL ,
`Fecha` DATE NOT NULL ,
`Ciudad` VARCHAR(20) NOT NULL ,
PRIMARY KEY (`idPedido`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Calzado`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Calzado` (
`idCalzado` CHAR(5) NOT NULL ,
`Modelo` VARCHAR(20) NOT NULL ,
`Precio` DOUBLE NOT NULL ,
PRIMARY KEY (`idCalzado`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Pedido_has_Calzado`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Pedido_has_Calzado` (
`Pedido_idPedido` CHAR(5) NOT NULL ,
`Calzado_idCalzado` CHAR(5) NOT NULL ,
`Modelo_Calzado` VARCHAR(20) NOT NULL ,
`Modelo_Precio` DOUBLE NOT NULL ,
`Cantidad` INT NOT NULL ,
PRIMARY KEY (`Pedido_idPedido`, `Calzado_idCalzado`) ,
INDEX `fk_Pedido_has_Calzado_Pedido` (`Pedido_idPedido` ASC) ,
INDEX `fk_Pedido_has_Calzado_Calzado` (`Calzado_idCalzado` ASC) ,
CONSTRAINT `fk_Pedido_has_Calzado_Pedido`
FOREIGN KEY (`Pedido_idPedido` )
REFERENCES `mydb`.`Pedido` (`idPedido` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Pedido_has_Calzado_Calzado`
FOREIGN KEY (`Calzado_idCalzado` )
REFERENCES `mydb`.`Calzado` (`idCalzado` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);


-- -----------------------------------------------------
-- Table `mydb`.`Cliente_has_Pedido`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Cliente_has_Pedido` (
`Cliente_idCliente` CHAR(5) NOT NULL ,
`Pedido_idPedido` CHAR(5) NOT NULL ,
PRIMARY KEY (`Cliente_idCliente`, `Pedido_idPedido`) ,
INDEX `fk_Cliente_has_Pedido_Cliente` (`Cliente_idCliente` ASC) ,
INDEX `fk_Cliente_has_Pedido_Pedido` (`Pedido_idPedido` ASC) ,
CONSTRAINT `fk_Cliente_has_Pedido_Cliente`
FOREIGN KEY (`Cliente_idCliente` )
REFERENCES `mydb`.`Cliente` (`idCliente` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Cliente_has_Pedido_Pedido`
FOREIGN KEY (`Pedido_idPedido` )
REFERENCES `mydb`.`Pedido` (`idPedido` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

------------------------------------------------------------------------------------
insert into Cliente Values('AGJ25','Junior','Diaz');
insert into Cliente Values('FDJ16','Tommy','Torres');
insert into Cliente Values('JFC73','Luis','Mendoza');
insert into Cliente Values('FLS35','Clara','Alonso');
insert into Cliente Values('AGJ27','Junior','Diaz');


insert into Calzado Values('146','bota',86.24);
insert into Calzado Values('467','deportiva',36.50);
insert into Calzado Values('346','mocazin',45.89);
insert into Calzado Values('278','sandalia',15.36);
insert into Calzado Values('832','formal',55.50);


insert into Pedido Values('FHY','2009/07/09','Trujillo');
insert into Pedido Values('JYM','2009/07/15','Trujillo');
insert into Pedido Values('QFR','2009/07/23','Lima');
insert into Pedido Values('VFT','2009/06/09','Lima');
insert into Pedido Values('AJB','2009/07/12','Arequipa');
insert into Pedido Values('WFB','2009/05/09','Chiclayo');
insert into Pedido Values('SDE','2009/06/02','Lima');
insert into Pedido Values('HYN','2009/05/13','Trujillo');
insert into Pedido Values('FHR','2009/07/09','Trujillo');


insert into Pedido_has_Calzado Values('FHY','146','bota',86.24,3);
insert into Pedido_has_Calzado Values('JYM','467','deportiva',36.50,1);
insert into Pedido_has_Calzado Values('QFR','346','mocazin',45.89,1);
insert into Pedido_has_Calzado Values('VFT','278','sandalia',15.36,2);
insert into Pedido_has_Calzado Values('AJB','832','formal',55.50,3);
insert into Pedido_has_Calzado Values('WFB','346','mocazin',45.89,2);
insert into Pedido_has_Calzado Values('SDE','832','formal',55.50,2);
insert into Pedido_has_Calzado Values('HYN','278','sandalia',15.36,1);
insert into Pedido_has_Calzado Values('FHR','146','bota',86.24,1);


insert into Cliente_has_Pedido Values('FDJ16','FHY');
insert into Cliente_has_Pedido Values('JFC73','JYM');
insert into Cliente_has_Pedido Values('AGJ27','QFR');
insert into Cliente_has_Pedido Values('AGJ25','VFT');
insert into Cliente_has_Pedido Values('FLS35','AJB');
insert into Cliente_has_Pedido Values('FLS35','WFB');
insert into Cliente_has_Pedido Values('AGJ27','SDE');
insert into Cliente_has_Pedido Values('AGJ25','HYN');
insert into Cliente_has_Pedido Values('FDJ16','FHR');

----------------------------------------------------------------------------------
-- Ciudades que mas pedidos hacen
select Ciudad, count(*) from Pedido group by Ciudad;

-- Modelo de calzado m´sa vendido
select Modelo_Calzado, count(*) from Pedido_has_Calzado group by Modelo_Calzado;

-- Cantidad de ventas por dia
Select sum(Fecha='2009/07/09') from Pedido;

-- Cantidad de ventas por mes
Select count(*) from Pedido where Fecha >='2009/07/01' AND Fecha <= '2009/07/31';

-- Cantidad de modelos por pedido
Select Pedido_idPedido,Modelo_Calzado,Cantidad from Pedido_has_Calzado group by Pedido_idPedido;

-- Cantidad de pares de zapatos
Select Modelo_Calzado,sum(Cantidad) from Pedido_has_Calzado group by Modelo_Calzado;

-- Costo del Modelo por Pedido
Select Modelo,Precio from Calzado
INNER JOIN Pedido_has_Calzado ON Pedido_has_Calzado.Modelo_Calzado = Calzado.Modelo
group by Pedido_idPedido;

-- Costo total del Pedido
Select Pedido_idPedido,Cantidad*Modelo_Precio from Pedido_has_Calzado;

No hay comentarios:

Publicar un comentario