Ejemplos de funciones en mysql

Prueba de variables:

CREATE FUNCTION `borrame` ()
RETURNS INTEGER
BEGIN

declare var int;
declare nombre varchar(50);
declare num int;

set nombre='juan';

set var=5;

set var=var+3;

select count(actor_id) into num from actor;

RETURN num+var+length(nombre);
END

Usar un parámetro y un into variable:

CREATE FUNCTION `actores_como`(cadena varchar(50)) 
RETURNS int(11)
BEGIN

declare total int;
select count(actor_id) into total from actor 
where first_name like concat('%',cadena,'%') 
or last_name like concat('%',cadena,'%') ;
RETURN total;
END

Uso de if:

CREATE 
FUNCTION `tipo_sueldo`(sueldo INT) 
RETURNS varchar(10) 
BEGIN
DECLARE a VARCHAR(10);

IF sueldo>1500 then
RETURN 'ALTO';
ELSE
RETURN 'BAJO';
END IF;

END

Uso de case:

CREATE FUNCTION `tipo_sueldo_ampliado`(sueldo int) 
RETURNS varchar(30) 
BEGIN
declare tipo varchar(30);

case
 when sueldo<1500 then
 set tipo='bajo';
 when sueldo<2500 then
 set tipo='medio';
 else
 set tipo='alto';
end case;

RETURN tipo;
END

Uso de while:

CREATE FUNCTION `factorial`(num int)
 RETURNS int(11)
BEGIN
declare total,cont int default 1;

while cont<=num do
 set total=total*cont;
 set cont=cont+1;
end while;

RETURN total;
END

Ejemplos sentencias sql

Actores con más de 10 películas

select first_name, last_name, count(film_id) peliculas from
actor join film_actor using (actor_id)
group by first_name,last_name
having peliculas>30

Países con más de 10 ciudades

select country, count(city) cities
from country join city using (country_id)
group by country
having cities>10

Los diez países que más gastan

select country, sum(amount) total, avg(amount) media
from country join city using (country_id)
join address using (city_id)
join customer using (address_id)
join payment using (customer_id)
group by country
order by total desc
limit 0,10

El actor con más películas

select first_name, last_name, count(film_id) peliculas
from actor join film_actor using(actor_id)
group by first_name,last_name
order by peliculas desc
limit 1