Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas

martes, 5 de mayo de 2015

Ejemplos con Having en Oracle

Les comento que un compañero de mi trabajo toma un examen de Oracle / PLSQL a los que pasaron todas las pruebas previas (psicotécnico, razonamiento, etc). Pero he aquí la diferencia varios no saben usar esta sintaxis, su tipo pregunta es: Tengo 2 entidades Persona y Documentos, calcula las personas con más de un documento.

Para comenzar vamos a los conceptos:

  • Having es usando conjuntamente con GROUP BY.
  • Funciones que se puede combinar:
    1. SUM: Cuando requieras agrupar por cantidades que se acumulan y suman.
    2. COUNT: Cuando quieras buscar cantidades de registros sin sumar.
    3. MIN: Cuando requieras todos los registros mínimos a su valor.
    4. MAX: Cuando requieras todos los registros mínimos a su valor.

Vamos con unos ejemplos, tenemos la siguiente tabla simple:



1.- SUM: Queremos obtener la suma de total de temperatura por cada ciudad, lo podemos hacer con el siguiente query;

SELECT ciudad, SUM(temperatura) from
muestras GROUP BY ciudad HAVING SUM(temperatura);


Y si queremos sólo los que cumples que tengan más de 50 de total sumado de temperatura sólo le agregamos al final:
SELECT ciudad, SUM(temperatura) from
muestras GROUP BY ciudad HAVING SUM(temperatura)>50;


2.- COUNT: Si quisiéramos saber cuantas veces se repite cada registro sólo hacemos la siguiente consulta:


SELECT ciudad, COUNT(temperatura) from muestras GROUP BY ciudad HAVING COUNT(temperatura);



Ahora si queremos sólo las que tienen registros mayores a 2, esta es la consulta:

SELECT ciudad, COUNT(temperatura) from
muestras GROUP BY ciudad HAVING COUNT(temperatura)>2;



3.- MAX y MIN: Si quisiéramos saber cuanto es el máximo de cada uno de los registros pero no repetidos hacemos la siguiente consulta:



SELECT ciudad, MAX(temperatura) FROM muestras
  GROUP BY ciudad HAVING MAX(temperatura);



Ahora si sólo queremos los mayores a 16 haríamos lo siguiente:
SELECT ciudad, MAX(temperatura) FROM muestras  GROUP BY ciudad HAVING MAX(temperatura)>16;


Para mínimo es la misma lógica.

Ahora se atreven a dar el examen y dar un respuesta? Espero esté todo claro. Espero verlos muy pronto.



PD: La misma idea funciona para la base de datos MySQL.
El código de la tabla y registro es el siguiente:
CREATE TABLE  `muestras` (
  `ciudad` varchar(40) DEFAULT NULL,
  `fecha` date DEFAULT NULL,
  `temperatura` number(4) DEFAULT NULL
) ;
INSERT INTO `muestras` (`ciudad`, `fecha`, `temperatura`) VALUES
('Madrid', '2005-03-17', 23),
('París', '2005-03-17', 16),
('Berlín', '2005-03-17', 15),
('Madrid', '2005-03-18', 25),
('Madrid', '2005-03-19', 24),
('Berlín', '2005-03-19', 18);

martes, 17 de junio de 2008

Java 2 - Sesión 2

Conexión con Sql

En la sesión 1 empleamos como nuestra una base de datos de prueba de Access ahora en esta sesión Llamaremos a una tabla de SQL que también es una tabla prueba que nos trae SQL server que se llama Northwind.
Primeros activemos el servidor de nuestro computador,cuando instalamos vemos un icono ,como el siguiente hacer clic y se abrira la ventana,que acontinuación ponemos Start Eligiendo en primer lugar su servidor a trabajar que en este caso es Jocluis.
Ahora conectemos el Driver para SQL para trabajar con java.
Vamos a la ruta Inicio>>Panel de Control>>Herramientas Administrativas>>Orígenes de datos (ODBC).>>Elegimos la pestaña DSN del sistema>>Agregar
Nos sale el cuadro siguiente:
Ponemos SQL server[generalmente es la ultima opción].Luego ponemos Finalizar y no saldra siguiente cuadro.
En nombre poner el nombre como lo llamaras desde java en este caso le pongo Z y acontinuacion elegimos el Servidor que este caso es JOCLUIS.[asi le puse de nombre al instalar el SQL].Ponemos siguiente.

En establecer la siguiente base de datos como predeterminada ponemos la base de datos ejemplo de SQL Northwind. Ponemos siguiente y acontinuación Finalizar.

Ahora esta ultima parte nos da una opción de probar la conexion antes de usarla Ponemos Probar origenes de datos y nos tiene que salir esta ultima ventana de comprobación.

Ya conectamos el Driver ahora abrimos NetBeans.

Ejemplo 1 :Conexión Establecida con exito desde SQL

Abrimos un project de igual forma del ejemplo uno pero en este caso le pongo el nombre conexionsql1.

Código:

import java.sql.*;
public class conexionsql1{
public static void main(String args[]) {
Connection con;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException f){
System.out.println("Error en los drivers"+f);
}
try{
con=DriverManager.getConnection("jdbc:odbc:z");
System.out.println("conexion establecida corretamente");
}catch(SQLException f){
System.out.println("Error en la conexion"+f);
}
}
}

La salida es la Siguiente:

Ejemplo 2 :Llamar tablas de SQL

Abrimos un project de igual forma del ejemplo uno pero en este caso le pongo el nombre conexionsql2.


Código:

import java.sql.*;
public class conexionsql2{
public static void main(String args[]) {
Connection con;/*establece la coneccion a BD*/
Statement sen; /*contenedor para aplicar comandos sql*/
ResultSet res;
try{
Class.forName("jdbc.sqlserver.SQLServerDriver");
}catch(ClassNotFoundException e){
System.out.println("Error en los drivers"+e);
}
try{
con=java.sql.DriverManager.getConnection("jdbc:odbc:z");
System.out.println("conexion establecida corretamente");
sen=con.createStatement();
res=sen.executeQuery("Select * from Products");
while(res.next()){
System.out.print(res.getString(1)+"");
System.out.print(res.getString(2)+"");
System.out.println(res.getString(3)+"");
}
con.close();
}catch(SQLException e){
System.out.println("Error en la conexion"+e);
}
}
}


Notamos la siguiente salida.


No notamos mucha diferencia al trbajar con Access menos en los datos de esta tabla ejemplo,entonces concluimos que tambien podemos hacer los mismos ejemplos de llamar dos tablas,etc en SQL como lo hicimos en la sesión uno.