content top

Sentencias y comandos básicos SQL 1

Ejercicios simples resueltos.

Consultas (select)

  • Cálculos matemáticos: select 1+1
  • Obtener un listado de precios, variándolo un porcentaje, y ordenarlo por tipo y título: select title, title_id, type,(price*$1.08) Precio from titles order by type, title
  • Idem, pero ordenándolo en orden descendente y sin que se muestra la cantidad de filas mostradas: select title, title_id, type,(price*$1.08) Precio from titles order by price DESC set nocount off
  • Simple consulta de la columna “au_id” desde la tabla authors: select au_id from authors
  • Obtener un listado de títulos, cuyo precio NO sea mayor a 13, ordenar por precio: select title, price from titles where not price >13 order by Price
  • Obtener fechas de contratación de aquellos empleados que fueron contratados entre 01/01/91 y 01/01/92: select hire_date, lname from employee where hire_date between “01/01/91″ and “01/01/92″
  • Listar dirección y ciudad de los autores cuyos códigos sean 172-32-1176 o 238-95-7766: select au_id, address, city from authors where au_id=’172-32-1176′ or au_id=’238-95-7766′
  • Idem, pero usando el modificador IN: select au_id, address, city from authors where au_id in (’172-32-1176′, “238-95-7766″)
  • Listar títulos que tengan en él la palabra “computers”: select title_id, title from titles where title like “$computers”
  • Obtener publicaciones, ciudad y estado de aquellas editoriales que no tengan un estado definido (null): select pub_name, city, state from publishers where state is null
  • Mostrar las propiedades de la tabla publishers: sp_help publishers
  • Obtener Apellido y nombre de los autores: select au_lname + “,” + au_fname Autores from authors order by au_lname
  • Obtener los precios, pero que la salida sea: posee el valor de: select pub_id + ” posee el valor de”, convert(varchar, price) from titles
  • Listar empleados y su fecha de contratación en formato de fecha 3: select lname, convert(datetime, hire_date,3) from employee
  • Seleccionar autores cuyo nombre de pila sea Dull: select au_lname, au_fname from authors where “DULL”=(select substring(au_fname,1,4))
  • Obtener la fecha de 30 días desde la fecha actual: select getdate() + 30
  • Calcular cuantos días pasaron desde el 1º día del año 2000:
    • select datediff(day, “01/01/2000″, getdate())
    • select ord_date, qty from sales where(datepart(month, ord_date)=6)
    • select datalength(qty) from sales
    • select substring(title,2,80) from titles
  • Saber el id de una tabla a través de su nombre: select object_id(’titles’)
  • Saber el nombre de un objeto a través de su ID: select object_name(’261575970′)
  • Obtener el tamaño máximo (definido) y el real (utilizado) de las columnas de la tabla titles: select substring(title,1,10), col_length(’titles’, “title”) “Ancho máximo”, datalength(title) “Ancho real” from titles
  • Obtener la cantidad de títulos con precio: select count(price), count(*) from titles
  • Listar la cantidad de títulos con precios diferentes: select count(distinct price) from titles

Subconsultas

  • Listar mediante subconsultas el empleado mas recientemente contratado: select lname, fname, hire_date from employee where hire_date=(select max(hire_date) from employee)
  • Obtener las ventas totales: select sum(ytd_sales*price)”ventas total” from titles
  • Listar los títulos con sus precios, si no tiene precio definido, suponer que es de $40: select title_id, isnull(price,40) from titles
  • Idem, pero suponer que es de $0: select title_id, isnull(price,0) from titles
  • Obtener un promedio de precios, si hay nulos, suponer que vale $40: select avg(isnull(price,40)) from titles
  • Obtener salida El precio de la publicación es con 3 decimales: select title, + “El precio de la publicación es: ” + str(price, 6,3) from titles
  • Listar almacén, facturas y cantidad, ordenados por almacén: select stor_id “Almacén”, ord_num “Numero de Factura”, (qty) “Cantidad” from sales order by stor_id
  • Idem, agrupar por almacén usando cube: select stor_id “Almacén”, sum(qty) “Cantidad vendida” from sales group by stor_id with cube
  • Idem, usando rollup: select stor_id “Almacén”, sum(qty) “Cantidad vendida” from sales group by stor_id with rollup
  • Obtener promedio de precios, agrupar por tipo y usar compute:
    • select type, avg(price) from titles group by type compute max(avg(price))
    • select type, avg(price) from titles group by type compute min(avg(price))
  • Obtener la media de aquellos precios que sean mayores a 12: select type, avg(price) “Media de Precio” from titles group by type having avg(price)>$12

Joins

  • Listar título, fecha de venta y cantidad: select convert(char(20), titles.title) Titulo, Sales.ord_date, sales.qty from titles, sales where sales.title_id=titles.title_id
  • Idem, usando sentencias Transac-SQL: select convert(char(20), titles.title) Titulo, sales.ord_date, sales.qty from sales inner join titles on sales.title_id=titles.title_id
  • Listar los nombres de editoriales que tengan empleados de nivel mayor o igual a 200:
    • select pub_name “Nombre de editoras”, employee.fname “Nombre de empleados”, employee.lname “Apellido de empleados” from publishers, employee where employee.job_lvl>=200 and employee.pub_id=publishers.pub_id
    • select authors.au_fname “Nombre”, authors.au_lname “Apellido”, convert(char(15), titleauthor.title_id) Titulo from authors, titleauthor where titleauthor.au_id=authors.au_id
  • Listar las ventas de cada autor: select au_lname, au_fname, ytd_sales*price from authors, titles
  • Obtener las ganancias de cada autor: select au_lname, au_fname, ytd_sales*price from authors, titles, titleauthor where (authors.au_id=titleauthor.au_id) and (titleauthor.title_id=titles.title_id) order by au_lname
  • Listar el nombre del empleado más recientemente contratado: select lname Apellido, fname Nombre, hire_date Fecha from employee where hire_date=(select max(hire_date) from employee)
  • Obtener los títulos que no se vendieron en el año 1993: select sales.title_id Código, ord_date “Fecha Venta” from sales where(datepart(year, sales.ord_date))!=1993
  • Idem: select sales.title_id Código, title Nombre, ord_date “Fecha Venta” from sales, titles where (sales.title_id=titles.title_id) and (datepart(year, sales.ord_date))!=1993
  • Listar las editoriales que hayan publicado títulos de tipo “business”: select pub_name “Nombre de Editoriales”, type “Tipo de titulo” from publishers, titles where (titles.type=’business’) and (publishers.pub_id=titles.pub_id)
  • Idem: select pub_name “Nombre de Editoriales”, type “Tipo de titulo” from titles inner join publishers on titles.type=’business’ and publishers.pub_id=titles.pub_id
  • Seleccionar los títulos que sean tipo business y hayan vendido por los menos 1 unidad: select title “Nombre”, type “Tipo de titulo” from titles where titles.type=’business’ and ytd_sales > (select ytd_sales from titles where ytd_sales is not null)
  • Obtener una lista cross-tab según el nivel del empleado:
    • select lname, CASE
    • when job_lvl <100 then “Menor que 100″
    • when job_lvl <200 then “Menor que 200″ else “Mayor que 200″
    • end “mensaje” from employee order by 2,1
    • select s.title_id, sum(s.qty) from sales s, titles t, publishers p where s.title_id=t.title_id and t.pub_id=p.pub_id
    • and p.pub_name= “New Moon Books” group by s.title_id
10
Liked it
Etiquetas: , , , , ,
votar


One Response to “Sentencias y comandos básicos SQL 1”

  1. SlowPcFixing dice:

    Cool blog! Is your theme custom made or did you download it from somewhere? A theme like yours with a few simple adjustements would really make my blog jump out. Please let me know where you got your theme. Thank you

Leave a Reply