Professional Documents
Culture Documents
libSQL v21 PDF
libSQL v21 PDF
! "
# #$% ! & #'( ) ! #%*(&$%+# ! , "
-' # . /#! "
0
1
2
1 2
1
" 3 1
4
1 "
* !, 5 6 # "
* !, %# "
* !, &%7 0
2 1 0
* !, /#! $ 0
2(#$%,# #, /#! ! &$$%+#8 ! $,! 9 %%:9 6%$;. $;,, <
3 =
5& ! > ! ! ! &, > &, #(&, =
$$%+# ! > &, #(&, ?
,#> %+# ! > &, #(&,
2 @
2 $; $ ( &
A $$%+# ! (# * ! (# :$;
,#> %+# ! (# :$; &:, B ,! !,
"
" &%B% $%+# ! $ ! #
" ,#$ # $%+# ! $ ! #
" ,#'%(! ! (# $ ! #
" A $$%+# ! (# * ! (# $ ! #
" ,#> %,# B .C $(& . B%#C $(&
02
0 2(#$%+# ,(#!
0 :(#$%,#
< "
= 2 4 "
? "
3 1 <
2 2 2 =
2 @ =
2 ?
2 3
@
"
0 3 1
3 1 1
2 0
0
D 2 <
=
" 2 ?
0 1 1
< 1 2 2
= E
?
3 1
" 1 0
" =
" 4 =
" * !, # ( &),%# =
" * !, F%## G),%# ( %#'H &% I$,&(B# J ?
" * !, F%## G),%# ,# A* %+#I5,,& # ?
" * !, $ , ),%# ?
" %# A% !%$%,# &: # %# A% /#!
" " K,!,! 5 ),$,# & %# A% /#!
" 1
" 1
"" 1 1
"0
"<
"= 3 1 0
0 1 =
0 =
0 * !, ! (#%+# "?
0 * !, ! %# $$%+# "
0 * !, ! !%: #$% "
0 ,%#$, $ ,! &, ,* !, &' 5 %$, "
0 3 %# ! . ,* !, &' 5 %$, "
0 "
0 3 1 "
< 1 "0
< 1 4 "<
< ,#$ # $%+# A # *, & %LM(% ! 8 &: ),%# "=
< ,#$ # $%+# A # *, & ! $; 8 %'; ),%# "=
< ,#$ # $%+# A # $,B*& 8 :(&&),%# 0?
< M(%> &#$% . )B*&, 0?
< 1 4 1 0
< 1 4 1 0
< 1 4 0
<" 0
<0 3 1 0
= 1 00
= 3 3 D 3 00
= 3 3 D 2 0<
= 3 3 2 <?
= * !, %# <
= * !, #, %# <
= * !, #. <
= * !, && <
= : #$% A # <0
= " * !, A% <<
= 0 * !, #, A% <=
= 2 <=
=" 3 1 =
=0 3 1 4 =
=< 1 N O =
== 3 =
= ? =
= 3 1 =<
! "
? 1 ==
? ?
? 1 ?
? 2 1 ?
? ?
# $ " !
2 1 ?0
1 3 ?<
1 P ?
# $
3 1 P
3 1 P
3 1 P
3 1 P
3 1 P "
" 3 1 P 0 0
0 3 1 P < <
< 3 1 P = <
# $ "
%
PRÓLOGO
$ *-(&, &%L (# * # $%+# ' # &! &&#'( ) 9 %#$&(. #!,& :%# &%! !9
B,%> $%+#9 , -' # . /#! %B%B,9 %# ,!($ &, $,#$ *, 5/ %$, # $ %,
,5 &B,! &, &$%,# & 2%# &B # ! $ %5 & 5 ! ! , M( > B*& &,
& ',! ,!, &&%5 , # &, !% %# , )B*&,
Tabla FACTURAS
CODFAC CODCLI FECHA IVA DTO
30 100 1-01-03 16 5
31 101 2-01-03 9
32 101 16 5
33 106 8-01-03 16 5
Tabla CLIENTES
CODCLI NOMBRE DIRECCIÓN CODPUE
101 Alberto Cuesta, 5 1000
102 Carlos En proyecto, 3 1000
103 Pedro Colón, 4 1001
9 E 9 9 H3 J ? T?T??"
1
3
"
9 E 9 9 H3 J ? T?T??"
1 0
3
<
5& ,>%#$%
2(.7,1 8 .(29 +/20' 1*2&
$,!* , #, #(&& 3 @ H J
9 E 9 9 H3 J ? T?T??"
1 =
#,B5 #, #(&& 3 @ H ?J
5& ( 5&,
2(.7,1 8 .(29 +/20' 1*2&
$,!*( #, #(&& 3 @ H J
#,B5 #, #(&& 3 @ H ?J
$,!* , #, #(&& 3 @ H J
5& &%#
2(.7,1 8 .(29 +/20' 1*2&
$,!$&% #, #(&& H J
#,B5 #, #(&& 3 @ H ?J
!% $$%,# #, #(&& 3 @ H ?J
$,!*, & 3 @ H J
$,!*( #, #(&& 3 @ H J
5& 3 #! !,
2(.7,1 8 .(29 +/20' 1*2&
$,!> # #, #(&& H J
#,B5 #, #(&& 3 @ H ?J
!% $$%,# #, #(&& 3 @ H ?J
$,!*, & 3 @ H"J
$,!*( #, #(&& 3 @ H J
$,!): #, #(&& H J
5& %$(&,
2(.7,1 8 .(29 +/20' 1*2&
$,! #, #(&& 3 @ H<J
! $ %* #, #(&& 3 @ H ?J
* $%, #, #(&& H09 J
,$7 H"J
,$7IB%# H"J
5& 2 $ (
3
?
5& %# I:$
2(.7,1 8 .(29 +/20' 1*2&
$,!:$ #, #(&& H"J
&%# #, #(&& H J
$ # H J
$,! #, #(&& 3 @ H<J
* $%, H09 J
!, H J
9 E 9 9 H3 J ? T?T??"
2 INICIACIÓN A SQL
&,5) %>,! $ *-(&, %#%$% 5 > B # &&$ , # & # #$% ! $(* $%+#
! ! , ! &&#'( )
2(.)+>,8
select codfac, fecha
from facturas
where iva = 16
and codcli = 100 ;
2.5 Ejercicios
3
select codart, cant
from lineas_fac
where dto = 10
or precio > 5.05 ;
2.6 Autoevaluación
9 E 9 9 H3 J ? T?T??"
3 FUNCIONES Y OPERADORES ESCALARES
3.2.2 Operador in
( :(#$%,# B%# , B(. #$%&&,8 1 +, 4AG)G0G GH6! >( &> $% , %1 %'( &
&'(#, ! &, > &, %#$&(%!, # & &% # * K# % HAG)G0G GHJ . ! >( &> :&, #
$ ,$,# %, %'(%# &-# (B (:(#$%,# B%# ,8
1 +, 4AG)G06 M(%> & 41 D A62-41 D )62-41 D 06
&:(#$%,# B%# , ! &,* !, ,2* +, )( , &$,# %,8 1 ,2* +, 4AG)G0G GH 6
! >( &> $% , %1 #, %'( & #%#'(#, H, 9 !% %# , ! ,!, J ! &, > &,
%#$&(%!, # & &% # * K# % HAG)G0G GHJ . ! >( &> :&, # $ , $,# %,
%'(%# &-# (B (:(#$%,# B%# ,8
1 ,2* +, 4AG)G06 M(%> & 41 CI A61,041 CI )61,041 CI H6
( :(#$%,# B%# , $,B*& B # %!K# %$, # &, !% %# , ! R==9 $$ 9
$&9 , . .
9 E 9 9 H3 J ? T?T??"
2 0
3
<
%'(%# A* %+# ! >( &> & > &, -'* % A* %+# > &C L1( .
$,# %#( $%+# B%# %#,9 ! >( &> &> &, -'* % A* %+# > &C L1( . -
($ %> B # %#%#'(# ! & %'( &! ! # %, ; $(B*&%!,9 ! >( &> -'*, %
#, A% $&/( (& '(&' . #%#'(# ! & %'( &! ! # %, ; $(B*&%!,9 # ,#$
! >( &> &> &, ,.((
case expresión when val1 then ret1
when val2 then ret2
…
else retn
end
%'(%# A* %+# ! >( &> &> &, -'* %'5/-'&+2, > &C $% , .
$,# %#( $%+# B%# %#,9 ! >( &> &> &, -'* % A* %+# > &C $% , . -
($ %> B # %#%#'(# ! & A* %,# # %, ; > &( !, $% ,9 ! >( &>
-'*, %#, A% $&/( (& '(&' . #%#'(# ! & A* %,# # %, ; > &( !,
$% ,9 # ,#$ ! >( &> &> &, ,.((
case when expresión1 then ret1
when expresión2 then ret2
…
else retn
end
9 E 9 9 H3 J ? T?T??"
2 =
o # $& <%8
decode( sign(precio-100), 1, ‘mayor’, ‘normal’ )
• ?+*)@ :(#$%+# ( & B #, C%&M( & :(#$%+# +: 5 # (# #CB ,*
! * /B , % &* %B * /B , $% ,9 ! >( &> & '(#!, . B%# V
# $ ,$,# %,9 % & $ * /B , $% ,9 ! >( &> &$( ,. B%# V.
- ($ %> B # ! >,&> (# > &, :%# & %#, $(B*& #%#'(# ! &
$,#!%$%,# # %, 9 *,# $,B,* #C&%B,* /B ,HC&%B $,#!%$%+#J &> &,
$% ,9 $,# &, $( & $,#!%$%+# $(B*& %B* . ! >,&> / & C&%B,
* /B ,
, )B*&,9 % ! B, & % N#, B &O $( #!, &%> > & "9 N !($%!,O
$( #!, &%> > & 0 . N, ,O # $( &M(% , ,$ , ! 5 - $& &, %'(%# 8
o # $$ 8
switch( iva=16, "normal", iva=7, "reducido", True, "otro" )
o # $& <%8
decode( iva, 16, ‘normal’, 7, ‘reducido’, ‘otro’ )
• @22&' :(#$%+# B5%K# %# (# *&%$ $%+# * $%! % &* %B * /B ,
> &C (#,9 ! >( &> & '(#!, * /B ,V % &* %B * /B , > &C !, 9
! >( &> & $ ,V. - ($ %> B #
, )B*&,9 % ! B, & % N :$ %>,O $( #!, &B,!, ! * ', > & 9
N ) O $( #!, B,!, ! * ', > & . N$; M( O $( #!, &B,!, ! * ', > & 9
! 5 - $& &, %'(%# 8
o # $$ 8
choose( modoPago, "efectivo", "cheque", "tarjeta" )
o # $& <%8
decode( modoPago, 1, ‘efectivo’, 2, ‘cheque’, 3, ‘tarjeta’
)
3
?
$ $
$ 3 2 $ 3 3 3 $ 2
2 3
2 2 2 3 2 3
3
♦ ='-)+)+28 $ %5% (# # #$% M( B( $+!%',9 & :$; . &! $( # , ! &
:$ ( %# %> H%> #(&, , $ ,J9 >%( &%L #!, (# $ , # M( && :$ ( $(.,
! $( # , #(&,
E.01F ,! & :(#$%+# '
2(.)+>,F
select codfac, fecha, nvl( dto, 0 )
from facturas
where nvl( iva, 0 ) = 0 ;
9 E 9 9 H3 J ? T?T??"
2
3
3.6.2 Concatenación de cadenas
$,#$ # $%+# ! $ ! # ! $ $ &%L # R== . # $& $,# &
,* !, NNO9 B%#
N M( # $$ &%L $,# &,* !, NOO
9 E 9 9 H3 J ? T?T??"
2
3
"
3.10 Ejercicios
9 E 9 9 H3 J ? T?T??"
2 0
♦ ='-)+)+2 8 +!%', . #,B5 ! M( &&, $&%# $(., #,B5 B%# $,# & %
N LO
2(.)+>,8 ( & %# A% ! $&
select codcli, nombre
from clientes
where substr( nombre, length( nombre )-1, 2 ) = ‘ez’ ;
3
<
3.11 Autoevaluación
9 E 9 9 H3 J ? T?T??"
4 FUNCIONES DE COLUMNA
Tabla ARTICULOS
CODART PRECIO STOCK
A1 1 150
A2 2
A3 2 30
A4 250
A5 3 10
9 E 9 9 H3 J ? T?T??"
2
2(.)+>,8 &$(& &* $%, B !%, ! M( &&, -$(&, $(., ,$7 #, (* & ?
(#%! !
'&.(*1028 # & 5& ! -$(&, $,# & $,# #%!, B, !, & * %#$%*%, ! &
$ *-(&,9 & (& !, ! 9 ( ,
♦ ='-)+)+28 $ %5% (# # #$% M( ,5 #' & ,$7B/ &,* M( &&, -$(&,
$(.,* $%,#, (* &, (,
2(.)+>,8
select max( stock )
from facturas
where precio <= 2.00 ;
'&.(*1028 # & 5& ! -$(&, $,# & $,# #%!, B, !, & * %#$%*%, ! &
$ *-(&,9 & (& !, ! ?(#%! !
3
♦ ='-)+)+28 $ %5 (# # #$% M( $ &$(& & ,$7 B !%, ! &, -$(&, 9 * ,
$,# %! #!,&, #(&, $,B,$ ,
2(.)+>,8 # * %#$%*%, & :(#$%+# 1LP %'#, &, > &, #(&, >% &, ; . M(
$,#> % !%$;, > &, &> &, $ , # ! $ &$(& & B !%
select avg( coalesce( stock, 0 ) )
from articulos;
*, %5& ,&($%+# $,# % # $ &$(& & (B ! ,!, &, * $%, H ,* $%+#
%'#, /&, > &, #(&, J . !%>%!% *, & , &! -$(&,
select sum( stock ) / count( * )
from articulos;
'&.(*1028 # & 5& ! -$(&, $,# & $,# #%!, B, !, & * %#$%*%, ! &
$ *-(&,9 & (& !, <<
4.6 Ejercicios
3
else 1 end )
from facturas;
4.7 Autoevaluación
9 E 9 9 H3 J ? T?T??"
5 AGRUPACIÓN
Tabla PUEBLOS
CODPUE NOMBRE CODPRO
101 NULES 12
102 ONDA 12
103 SARRION 44
104 LIRIA 46
105 GANDIA 46
Tabla FACTURAS
CODFAC FECHA CODCLI IVA DTO
1 14-1-05 100 16 5
2 14-2-05 100 16 0
3 14-1-06 100 7 5
4 14-1-07 101 16 0
5 15-4-08 102 0
6 15-4-08 102 7 5
# > L$ !, &, ' (*, 9 * $ ! ' (*, B( &,%#!%$ !, # & $&/( (& &'(')*9
! $%9 &$+!%',! * ,>%#$% . &#CB ,! :%& ! # ,! &' (*, , # ,9 & (& !,
& %'(%# 8
CODPRO COUNT(*)
12 2
44 1
46 2
CODPRO MIN(CODPUE)
12 101
44 103
46 104
9 E 9 9 H3 J ? T?T??"
1 0
CODPRO MAX(LENGTH(NOMBRE))
12 5
44 7
46 6
3
<
Tabla FACTURAS
CODFAC FECHA CODCLI IVA DTO
1 15-1-05 100 16 5
2 15-2-05 100 16 0
3 15-1-06 100 7 5
4 15-1-07 101 16 0
5 15-4-08 102 0
6 15-4-08 102 7 5
,B, *( ! > 9 &, > &, #(&, $,# %! # $,B, (# > &, B/ 9 !% %# , ! &,
! B/ ,# #!, &#CB ,! :%& ! # ,! $ ! ' (*,9 & (& !,:%# & - &B, !,
# & %'(%# 5&8
9 E 9 9 H3 J ? T?T??"
1 =
CODCLI AVG(DTO)
100 3,33
101 0
102 2,5
%#, ; # #!%!, & # %, $,# (& 9 &, B ), B, & 5& %#%$%& ' (* !
*, $+!%',! $&%# . $ &$(& * $ ! ' (*,& :(#$%+# ! ' (* $%+# H1LP40*26J
%B*, # ! $ M( * $ ! ' (*,9 & $,# (& ! >( &> (# ,& :%& -*( 9
YM(K &%L & %'(%# # #$%Z
3
?
9 E 9 9 H3 J ? T?T??"
1
group by codcli
having codcli < 10 ;
3
5.8 Combinación de Funciones de Grupo y Funciones de
Columna
*, %5& (%&%L %B(&/# B # (# :(#$%+# ! $,&(B# . (# :(#$%+# ! ' (* $%+#
# $ ,9 & :(#$%+# ! ' (* $%+# *&%$ $ ! ' (*,! >,&>%#!,(# > &, * $ !
' (*, . & :(#$%+# ! $,&(B# *&%$ & (& !, # %, * ! >,&> (# C#%$,
(& !,
♦ ='-)+)+28 $ %5% (# # #$% M( ,5 #' &B/A%B, ! &, ! $( # , B !%,
*&%$ !, &, $&%# # ( :$ (
2(.)+>,8 @ . M( $ &$(& * $ ! $&%# &! $( # , B !%, $,# (# :(#$%+# !
' (* $%+# . * % ! !%$;, ! $( # , ,5 # &B/A%B, $,# (# :(#$%+# !
$,&(B#
select max( avg( dto ) )
from facturas
group by codcli ;
'&.(*1028 ,# &, ! , ! & 5& B, ! &* %#$%*%,! &$ *-(&,9 & (& !,
9
♦ ='-)+)+28 $ %5% (# # #$% M( ,5 #' &#CB , B/A%B, ! *( 5&, ! (#
* ,>%#$%
2(.)+>,8 @ . M( $ &$(& * $ ! * ,>%#$% &#CB ,! *( 5&, $,# (# :(#$%+#
! ' (* $%+# . * % ! !%$;, ! , ,5 # &B/A%B, $,# (# :(#$%+# !
$,&(B#
select max( count( * ) )
from pueblos
group by codpro ;
'&.(*1028 ,# &, ! , ! & 5& B, ! &* %#$%*%,! &$ *-(&,9 & (& !,
5.10 Ejercicios
3
2(.)+>,8
select case iva when 16 then 1 when 7 then 2 else 3 end,
count( * )
from facturas
group by case iva when 16 then 1 when 7 then 2 else 3 end
having count( * ) > 100 ;
♦ ='-)+)+2 8 $ %5% (# $,# (& M( ! &, -$(&, $(., $+!%', B%# $,# &
& N4O B/ (# !-'%, #(BK%$,9 B( &$+!%', . & $ # %! ! , &* !%! # &
&-# ! :$ (
E.01F ,! & :(#$%+# ! ' (* $%+# ' (* $%+# ! & &-# ! :$ ( *,
-$(&,
2(.)+>,F
select codart, sum( cant )
from lineas_fac
where upper( substr( codart, length( codart )-1, 1 ) ) = ‘X’
and substr( codart, length( codart ), 1 ) between ‘0’ and
‘9’
group by codart ;
5.11 Autoevaluación
9 E 9 9 H3 J ? T?T??"
1
3
6 CONCATENACIÓN INTERNA DE TABLAS
Tabla PUEBLOS
CODPUE NOMBRE CODPRO
101 NULES 12
102 ONDA 12
103 SARRION 44
Tabla PROVINCIAS
CODPRO NOMBRE
12 CASTELLÓN
44 TERUEL
46 VALENCIA
NOMBRE NOMBRE
NULES CASTELLÓN
ONDA CASTELLÓN
SARRION TERUEL
PUEBLO PROVINCIA
NULES CASTELLÓN
9 E 9 9 H3 J ? T?T??"
1 =
ONDA CASTELLÓN
SARRION TERUEL
3
?
9 E 9 9 H3 J ? T?T??"
1
3
2(.)+>,8
select f.codfac, f.fecha, v.nombre
from facturas f join vendedores v using ( codven ) ;
3
,B, *( ! > 9 ; Q !%!, (# ' (* $%+# !%$%,# & *, & #,B5 ! &
* ,>%#$% # &%! !9 ' (* $%+# #, > ' (* B/ & :%& ! &, M( ; $ &
* %B 9 ! $%9 #, > ' # #( >, ' (*, ,! :, B $(B*& & '& !
, ,. & % B *( ! )$( & # #$% #M(%&B #
♦ ='-)+)+28 $ %5% (# # #$% M( B( &$+!%', . #,B5 ! $ ! > #! !, 9
)(# , &#CB ,! :$ ( M( ; &%L !,
2(.)+>,8
select codven, v.nombre, count( * )
from vendedores v join facturas f using ( codven )
group by codven, v.nombre ;
6.8 Ejercicios
9 E 9 9 H3 J ? T?T??"
1
3
"
2(.)+>,8
select j.codven, j.nombre, count( * )
from vendedores j join vendedores v
on ( v.codjefe = j.codven )
group by j.codven, j.nombre ;
6.9 Autoevaluación
3
7 ORDENACIÓN Y OPERACIONES ALGEBRAICAS
Tabla A Tabla B
10 0
10 10
20 10
20 20
50
9 E 9 9 H3 J ? T?T??"
1 "
3
"
&,* !, 7+,.& 1((N '5)'/* 1((#, &%B%# !(*&%$ !, # $ ,9 %(# B%B :%&
* $ >$ # & * %B # #$% . > $ # & '(#! 9 # & (& !, :%&
* $ / /- * # 0.> $
% &%L # > % !%: #$% 9 K > &C # ! %LM(% ! ! $; 9 B #, M(
(%&%$ # * K# % * 5&$ (# , ! # !% %# , !%: #$% %# & B%B * %, %! !9
# &, ! # ! > &( $%+#9 M( & (#%+#
# &'(#, % B & !%: #$% %#!%$ $,# & * &5 '5)'/*9 B%# M( # , ,
%#!%$ $,# & * &5 7+,.& (:(#$%,# B%# , %!K# %$,
!%: #$% ! &, , , ,* !, &' 5 %$, 9 & !%: #$% ! $,#)(# , #, (#
,* !, $,#B( %>,
♦ ='-)+)+28 ! & # %, 5& . 9 $ &$(& & (& !,! 7+,.& .
7+,.& 1((
2(.)+>,8 & (& !, B( $,# %#( $%+#8
9 E 9 9 H3 J ? T?T??"
1 "
7.3 Ejercicios
3
"
intersect
select l.codart
from lineas_fac l
group by l.codart
having sum( l.cant ) > 100;
7.4 Autoevaluación
3
8 CONCATENACIÓN EXTERNA DE TABLAS
$ *-(&, 5, ! B5%K# & $,#$ # $%+# ! 5& 8 (# ,* $%+# B(. ; 5%( &.
C%& # & * ,$ B%# , ! (# 5 ! ! , M( * B% & $$ , . A $$%+# !
%#:, B $%+# M( #$( # * %! # > % 5& $,#$ # $%+# A # ! 5&
(# > %# ! & $,#$ # $%+# %# # &M( * B% M( #, *% ! # :%& ! (#
5& (#M( #, A% #%#'(# :%& &$%,# ! # & , 5&
Tabla CLIENTES
CODCLI NOMBRE CODPUE
101 Alberto 1000
102 Carlos 1000
103 Juan
104 Pedro 1001
Tabla PUEBLOS
CODPUE NOMBRE
1000 Cella
1001 Olocau
1002 Jumilla
$,# %#( $%+# B( & $,# (& $,# $,#$ # $%+# %# # . & (& !,,5 #%!,
$,# && B( # * %B &(' & # #$% $,# & %# A% /#! . ! *(K $,# &
%# A% !%$%,# &
select c.nombre cliente, p.nombre pueblo
from clientes c join pueblos p using ( codpue ) ;
select c.nombre cliente, p.nombre pueblo
from clientes c, pueblos p
where c.codpue = p.codpue ;
CLIENTE PUEBLO
Alberto Cella
Carlos Cella
Pedro Olocau
"<
9 E 9 9 H3 J ? T?T??"
1 4 "=
CLIENTE PUEBLO
Alberto Cella
Carlos Cella
Juan
Pedro Olocau
CLIENTE PUEBLO
Alberto Cella
Carlos Cella
Pedro Olocau
Jumilla
3
0?
,B, *( ! > 9 &*( 5&,! (B%&& * $ # & (& !,* M( # & 5& !
$&%# #, A% #%#'(#,M( %! &&- &#,B5 ! &$&%# * &*( 5&,! (B%&&
#(&, ! $%9 & &%L & $,#$ # $%+# A # 9 &*( 5&, ! (B%&& :(
$,#$ # !, (# :%& >% ( &! & 5& $&%# $,# ,!, ( > &, #(&,
# #$% $,# %# A% !%$%,# & %!K# %$ & B%B $,# $,#$ # $%+# %# #
A$ *( #!, &$ /$ S # * K# % , $ $ 9 HSJ9 ! 5 # * $ # &
, , &!, ! & 5& $(. :%& #, M(% # * ! ! $%9 $,B, #, M(% M(
*% ! #%#'C# *( 5&,9 & A,HSJ ! 5 % # &&!,! & 5& $&%#
CLIENTE PUEBLO
Alberto Cella
Carlos Cella
Juan
Pedro Olocau
Jumilla
9 E 9 9 H3 J ? T?T??"
1 4 0
PUEBLO NUMCLI
Cella 2
Olocau 1
PUEBLO NUMCLI
Cella 2
Olocau 1
Jumilla 1
PUEBLO NUMCLI
Cella 2
Olocau 1
Jumilla 0
,B, *( ! > 9 &C#%$,$ B5%,; %!, ( %(% &,* !, )2.,*4<6M( ! >( &>
# &$ ,! (B%&& *, &,* !, )2.,*4) )20)(+6M( ! >,&> /$ , # !%$;,$ ,*(
&$+!%',! &$&%# * !%$;,*( 5&, #(&,
3
0
9 E 9 9 H3 J ? T?T??"
1 4 0
8.6 Ejercicios
3
0
9 E 9 9 H3 J ? T?T??"
1 4 0
8.7 Autoevaluación
3
9 SUBCONSULTAS
9.1 Introducción
# (5$,# (& (# # #$% &'(')* M( (%&%L ! # ,! , # #$% &'(')*
(5$,# (& ,5%# (#, (& !, %# B !%, H(#, , B/ ! , J M( B*& # # &
$,# (& * %#$%* & (5$,# (& %B* ! 5 # $% # * K# %
(5$,# (& *( ! # * $ * /$ %$ B # # $( &M(% %%, ! & $,# (& * %#$%* &9
(#M( &, &(' B/ ; 5%( & ,# & $&/( (& ?@'-' . @1L+,P
(5$,# (& *( ! # $& %:%$ # &, %'(%# %*, 9 #!%#!, &#CB , !
:%& . $,&(B# M( ! >( &> #8
• (5$,# (& M( ! >( &> # (# C#%$,> &, H(# :%& $,# (# C#%$ $,&(B# J
• (5$,# (& M( ! >( &> # (# C#%$ :%& , (*& $,# B/ ! (# $,&(B#
• (5$,# (& M( ! >( &> # (# $,#)(# ,! :%& H ! $%9 $ ,9 (# ,> % :%& J
'(%! B # ! $ %5 # $,# B/ ! && . * # # )B*&, ! ( , ! ,
%*, ! (5$,# (&
2(.)+>,8
select codart, descrip
from articulos
where precio > ( select avg( precio )
from articulos ) ;
5/(+)1)+>,8 (5$,# (& ,5%# &* $%, B !%, ! &, -$(&, $,# (&
* %#$%* &B( M( &&, -$(&, $(.,* $%, (* !%$;,* $%,B !%,
♦ ='-)+)+28 $ %5% (# $,# (& M( ! >( &> &$+!%',. #,B5 ! M( &&, $&%#
$(., #CB , ! :$ ( B #, M( & B% ! ! &B ., #CB , ! :$ ( ! (#
$&%#
2(.)+>,8
select codcli, c.nombre
from facturas f join clientes c using ( codcli )
group by codcli, c.nombre
having count( * ) < ( select 0.5 * max( count( * ) )
from facturas f2
group by f2.codcli ) ;
5/(+)1)+>,8 (5$,# (& $ &$(& & B% ! ! &B ., #CB , ! :$ ( ! (#
$&%# ! & 5 ! ! , $,# (& * %#$%* &B( &$+!%', . #,B5 !
M( &&, $&%# $(., #CB , ! :$ ( %#: %, & > &, $ &$(&!, *, &
(5$,# (&
♦ ='-)+)+28 $ %5% (# $,# (& M( ! >( &> &$+!%',9 ! $ %*$%+# . #CB , , &!
(#%! ! > #!%! * $ ! -$(&, B*& #!,(# (5$,# (& # & $&/( (& &'(')*
2(.)+>,8
select a.codart, a.descrip,
( select sum( l.cant )
from lineas_fac l
where l.codart = a.codart ) SumCant
from articulos a ;
5/(+)1)+>,8 # & # #$% # %, & (5$,# (& #$( # # & B%B $&/( (&
&'(')* (5$,# (& ! >( &> & (B ! (#%! ! > #!%! # & &-# ! :$ (
* $ ! -$(&, (#M( # #$% $, $ 9 M(% & )$($%+# ! (#
(5$,# (& * $ ! -$(&,B, !, # (# ! B%# !, % B & )$($%+# ! &
# #$% # %, $( &!,5& ! %B*,M( & %'(%# # #$%9 & $( &( (#
$,#$ # $%+# A # . (# %B*& ' (* $%+#8
select codart, a.descrip, sum( l.cant ) SumCant
from articulos a left join lineas_fac l using ( codart )
group by codart, a.descrip ;
9 E 9 9 H3 J ? T?T??"
0=
3
<?
9 E 9 9 H3 J ? T?T??"
<
9.4.1 Operador in
# $ *-(&, # %, ; ! $ %, $+B, & ,* !, +, *( ! B*& *
! B%# %(# &B # ,* # $ (# $,#)(# ,! !,! > &, ;, > > $+B,
*( ! ( (# (5$,# (& # &(' ! (# $,#)(# ,! !,! > &,
,* !, %# !, :, B ; 5%( & ! ( ,8 '5/-'&+>, +, 4&.A)2,&.(*1 6. 4'5/- G
'5/- G 6+, 4&.A)2,&.(*1 6 # &* %B $ , &,* !, ! B%# %(# > &, * # $
(# $,#)(# ,! > &, # & '(#!,$ , &,* !, ! B%# %(# (*& * # $ (#
$,#)(# ,! (*& $,# %#( $%+# ! $ %5 # B5, $ , $,# B/ ! &&
$,B%#L $,# &* %B $ , &* !%$ !, '5/-'&+>, +, 4&.A)2,&.(*1 6 > &C
> ! ! , % & (& !, ! & A* %+# %'( & &'(#, ! &, > &, ! & $,&(B#
! >( & *, & (5$,# (& &* !%$ !, > &C :&, %#, #$( # #%#'C# > &, #
& (5$,# (& M( %'( & & A* %+# ( #!,& (5$,# (& #,! >( &> #%#'(# :%&9
B5%K# > &C :&, % & (& !, ! & A* %+# (# #(&, H& * %LM(% ! ! &
,* !, +,J9 &* !%$ !, > &C #(&, %#%#'(#, ! &, > &, ! & (5$,# (&
%'( & & A* %+# . & (5$,# (& ; ! >( &, &'C# #(&,9 &* !%$ !, > &C #(&,
&%'( &M( ,$( - # & * !, # %, 9 $( #!, #, A% # > &, #(&, 9
$,B*, B%# , &&+'%$,. * 5& ( #!, - A% #9 &$,B*, B%# , B5%K# &
&+'%$, % %# # $( # M( &> &, #(&, M(%> & (# > &, ! $,#,$%!, , )B*&,9
* %#!, ! *(# , / $& , M( & A* %+# ! +, 4,.((6 ! $,B, (& !,
! $,#,$%!, *( , M( #, *( ! ! $% % &> &, ? /, #, / # & * ! $;
*( & * ! $; %# (# > &, ! $,#,$%!,
♦ ='-)+)+28 > &( &, %'(%# * !%$ !, H! B%# %! >( &> # $% ,9 :&, ,
#(&,J
1. 20 in ( 10, 20, 30 )
2. 20 in ( 10, 19, 30 )
3. 20 in ( 10, 30, null )
4. 20 in ( 10, 20, null )
5. 20 in ( subconsulta vacía )
6. null in ( 10, 20, 30 )
7. null in ( 10, null, 30 )
3
<
from facturas f
where f.iva = 16 ) ;
5/(+)1)+>,8 (5$,# (& ,5%# &$+!%', ! M( &&, > #! !, M( # &'(#
! ( :$ ( ; # *&%$ !,(# " U ! %> $,# (& * %#$%* & &%B% B,
&$+!%', . #,B5 ! M( &&, > #! !, $(., $+!%', ; &&# # &, $+!%',
! >( &, *, & (5$,# (&
'(#! :, B ! ( & ,* !, +, & %'(%# 8 4 '5/- G '5/- G 6 +,
4&.A)2,&.(*16 # * !%$ !, & (5$,# (& ! 5 ! >,&> # $,&(B# $,B, &
* $%:%$ ! # * K# % # & * %LM(% ! ! * !%$ !, A* %,# ! &
%LM(% ! '5/- 9 '5/- 9 > &C # . & :%& M( :, B # $,B* $,# & :%& ! &
(5$,# (& 9 (# (# &* !%$ !, > &C > ! ! , % #$( # &'(# :%& %'( &
# & (5$,# (& # $ ,$,# %, > &C :&,H%#$&( , %& (5$,# (& #,! >( &>
#%#'(# :%&J ! B%# % !, :%& ,# %'( & , !% %# 9 >K &, * !,
# %, ! B%B,$ *-(&,
%& (5$,# (& ! >( &> &'(# :%& ! #(&, . & , ! & :%& ,# !% %# ! &
:%& ! & %LM(% ! ! &,* !, +,9 &* !%$ !, > &C #(&,
♦ ='-)+)+28 +!%', . :$; ! M( && :$ ( # & M( ; $,B* !, (# B%B,
* ,!($ ,M( # & :$ ( < . # & B%B $ # %! !
2(.)+>,8
select distinct f.codfac, f.fecha
from lineas_fac l1 join facturas f using ( codfac )
where f.codfac <> 282
and ( l1.codart, l1.cant ) in ( select l2.codart, l2.cant
from lineas_fac l2
where l2.codfac = 282 );
9 E 9 9 H3 J ? T?T??"
<
Tabla FACTURAS
CODFAC IVA CODVEN
101 16 25
102 16
103 7 26
Tabla VENDEDORES
CODVEN NOMBRE
25 Juan
26 Pedro
27 Carlos
,# &, ! , # %, 9 & (5$,# (& M( ! >( &> &, $+!%', ! > #! !, ! &
:$ ( ,5 #! / & %'(%# $,#)(# ,8 4 G,.((G 6 , # ,9 & $,# (& * %#$%* &
$,B* ( 5 %$ ! > #! !, #, #$( # # &, # %, $,# & A* %+# )20L',
,2* +, 4 G,.((G 6 A* %+# /:& * &, > #! !, H ( #J . " H ! ,J
&> #! !, 0 H &, J A* %+# > &C #(&,9 $,# &,$( &* > #! !,
B*,$, $(B*& & %$$%+# . #, * $ &> #! !, &, A* %+#9
,2* +, 4 G,.((G 69 > &C #(&, ! !, M( #, *( ! ! $% #%M( &> #! !, K
# &, > #! !, * $%:%$ !, #%M( #, K ! !, M( #, * $ * , ; . (# > &,
#(&,
# :, B ! >% $,B*, B%# , %# (# %$$%+# # & $&/( (& ?@'-'
! & (5$,# (& * &%B%# &, B,& , > &, #(&, %'(%# ,&($%+# ,5%# &
(& !, * !%!, %#$&( , $,# & * #$% ! > &, #(&, .9 # &$ , ! & 5&
# %, 9 ! >,&> / & (& !, * !,8 09 &, :, B ! ,&> &* ,5&B
! &, > &, #(&, ( #!,& :(#$%+# )21('&)' * !($% &> &, #(&,*, , ,> &,
select v.codven, v.nombre
from vendedores v
where v.codven not in ( select f.codven
from facturas f
where f.codven is not null ) ;
♦ ='-)+)+28 CB ,! $&%# M( #, %# # :$ (
2(.)+>,8
select count( * )
from clientes c
where c.codcli not in ( select f.codcli
from f.facturas
where f.codcli is not null );
5/(+)1)+>,8 + M( # & )B*&, ; %#$&(%!,& %$$%+# )20)(++& ,2* ,.((
# & (5$,# (& *, M( & $,&(B# )20)(+! & 5& :$ ( $ * #(&, 9 *, &,
3
<
9 E 9 9 H3 J ? T?T??"
<
&* !%$ !, > &C > ! ! , %& $,B* $%+# 5&$%! *, &,* !,
> ! ! * &'(# ! & :%& ! >( & *, & (5$,# (& # $ ,$,# %, > &C
:&,H%#$&( , %& (5$,# (& #,! >( &> #%#'(# :%&J
%& (5$,# (& ! >( &> &'(# :%& ! #(&, 9 &* !%$ !, #, *,! / :&, H /
> ! ! ,,#(&,J
Tabla ARTICULOS
CODART PRECIO
A1 4.00
A2 2.00
A3 5.00
Tabla ARTICULOS
CODART PRECIO
A1 4.00
A2
A3 5.00
3
<"
,# & # %, 5&9 $( #!, > &C (# -$(&, &%L & %'(%# $,B* $%+#8
/-')+2 ID 1((4 !!G,.((G !!6 !, M( ; . (# #(&,9 $,B* $%+# ! >( &> %B*
! $,#,$%!,9 $,# &,M( & %$$%+# #, $(B*& . #%#'C# -$(&, &! / # & (& !,
; $;,9 & (& !,&+'%$, % $,# %! M( &> &, #(&, &> &, ! $,#,$%!,
! !, M( #, *( ! ! $% M(K -$(&, %# B ., * $%, %(#, ! &&, #(&, ,
! $,#,$%!,
,5 5&B # K #, &$,B*, B%# , ! !,9 %#, M( M(% ,5 # &
-$(&, , -$(&, $(., * $%, %'( & &B/A%B, %# # # $( # &, -$(&, $,#
* $%,#(&,
%'(%# # #$%9 M( ! >( &> & -$(&,, -$(&, $,# B ., * $%, %# # #
$( # &, #(&, 9 B(. * $%! & # %, B # * ,*( @ . M( Q !% (#
%$$%+# # & $&/( (& ?@'-' * &%B%# &, > &, #(&, # & (& !, ! &
(5$,# (& *, %5& ,&($%+# - $,#> % &, > &, #(&, ! & (5$,# (& # &
* $%,???$,# & .(! ! &,* !, )21('&)' '(%! B # B( & ,&($%+# $,# &
%$$%+#8
select a.codart, a.descrip
from articulos a
where a.precio >= all( select a2.precio
from articulos a2
where a2.precio is not null ) ;
, * $ , # &M( ; . M( # B($;, $(%! !, $,# ,* !, # %&
(5$,# (& ! >( &> &'C# (& !, , #, %& (5$,# (& #, ! >( &> #%#'C# (& !,9
&,* !, 1((! >( &> $% ,9 &,$( &*( ! ! &(' $% $,#:( %+#
♦ ='-)+)+28 Y (K &%L & %'(%# # #$% $,# &, ! , # %, Z
select a.codart, a.descrip
from articulos a
where a.precio >= all( select a2.precio
from articulos a2
where a2.precio is not null
and a2.codart like ‘A6%’ ) ;
2(.)+>,8 ! B, M( &&, -$(&, $(., * $%, (* # ,!, &,
* $%, ! &, -$(&, $(., $+!%', $,B%#L *, " , $,B, #, ; . #%#'C#
-$(&, $,# !%$;, $+!%', . $,# * $%, $,#,$%!,9 B( ,!, &, -$(&, *( &
(5$,# (& #,! >( &> #%#'(# :%& .9 *, # ,9 &,* !, ! >( &> $% ,
♦ ='-)+)+28 , ! & :$ ( # & M( ; *&%$ !, &B/A%B, ! $( # , H %#
(%&%L & :(#$%+# ! $,&(B# 715J
2(.)+>,8
select *
from facturas
where coalesce( dto, 0 ) >= all( select coalesce( dto, 0 )
from facturas );
select *
from facturas
where coalesce( dto, 0 ) >= all( select dto
from facturas
where dto is not null );
5/(+)1)+>,8 % # & * %B # #$% & (5$,# (& #, (%&%L & :(#$%+# )21('&)'
* $,#> % &, ! $( # , #(&, # ! $( # , $ ,9 & $,# (& * %#$%* &#,
! >( &> #%#'(# :%& %; . #(&, # & (& !, ! & (5$,# (& 9 ! !, M( &
* !%$ !, > &C #(&,
&,* !, ,2* +, M(%> &# CI 1((
9 E 9 9 H3 J ? T?T??"
<0
3
<<
9 E 9 9 H3 J ? T?T??"
<=
from facturas f
where f.iva = 16
and f.codven = v.codven ) ;
5/(+)1)+>,8 (5$,# (& ! >( &> ,! M( && :$ ( $,# %> " * (#
! B%# !, > #! !, $,# (& * %#$%* & $, ,!, &, > #! !, . ! )
M(K&&, * &, $( & A% # :$ ( $,# %> "
♦ ='-)+)+28 , &$+!%',. ! $ %*$%+# ! M( &&, -$(&, > #!%!, &'(# > L
2(.)+>,8
select a.codart, a.descrip
from articulos a
where exists( select ‘*’
from lineas_fac l
where l.codart = a.codart ) ;
3
=?
♦ ='-)+)+28 $ %5% (# $,# (& H$,# (# (5$,# (& # & $&/( (& :-27J M(
! >( &> &B ., ! $( # ,B !%, *&%$ !, # & :$ ( ! (# $&%#
2(.)+>,8
select max( dto_med )
from ( select avg( dto ) as dto_med
from facturas
group by codcli );
9 E 9 9 H3 J ? T?T??"
=
3
=
9 E 9 9 H3 J ? T?T??"
=
9.10 Ejercicios
3
=
select count( * )
from articulos a
where a.precio > ( select 0.55 * max( a2.precio )
from articulos a2 );
3
="
3
=<
9.11 Autoevaluación
9 E 9 9 H3 J ? T?T??"
10 CREACIÓN Y ACTUALIZACIÓN DE LOS DATOS
9 E 9 9 H3 J ? T?T??"
1 a 1 ?
3
?
iva integer(2),
dto integer(2),
constraint pk_facturas primary key (codfac),
constraint ch_iva_facturas
check (coalesce(iva,0) in (0, 7, 16) ),
constraint ch_dto_facturas
check (coalesce(dto,0) in (0, 10, 20, 40, 50) ) ,
constraint fk_fact_cli foreign key (codcli) ,
references clientes
on delete restrict on update cascade
constraint fk_fact_ven foreign key (codven) ,
references vendedores
on delete restrict on update cascade );
9 E 9 9 H3 J ? T?T??"
1 a 1 ?
,!, > &, * $%:%$ !, ! # , ! & $&/( (& L1(.'& ! 5 $, *,#! # %*, .
!%B # %+# $,# & $,&(B# M( * $ # &B%B, &(' 9 ! $%9 &> &, $,# &
$,&(B# 9 &> &, $,# & $,&(B# 9 e &> &, ,.(( (#, ! &, > &, >/&%!,
M( *( ! * $%:%$ * $( &M(% %*,! $,&(B#
% # & ! :%#%$%+# ! & 5& * $ # B/ $,&(B# M( & * $%:%$ ! # &
,* $%+#9 & ,! $,&(B# ! & :%& %# ,!($%! ,B # (> &, *, ! :$ ,9 %&,
(>% 9 ,5%# ,.((
%#, * $%:%$ # & $,&(B# ! & 5&9 (B &, ! # ! & $,&(B#
* $%:%$ !, # ( $ $%+#9 *(!%K#!, * $%:%$ B #, > &, M( $,&(B#
#' & 5&
# $( &(% ! &, $ , ! 5 '( M( & > &, ! & $&> * %B %
%# ,!($%! #, #(& . C#%$ 9 M( &, > &, #, #(&, %# ,!($%!, # & $&>
)# A% # # & 5& : %! 9 . M( $(B*&# & ,! $ $ - %$ ! &,
%5(,
>% , . * * > #% *, %5& $ B5%, # & ! :%#%$%+# ! & 5 !
! ,9 $,# )5& * $%:%$ & $,&(B# ,5 & M( ! %#
%#:, B $%+#
@ . M( B $ M( & * %B ! & $( %,# * $%&B # ! &%$ ! * &$ ,
! & $,&(B# ! %*, 01*' , *+7'9 . M( A% # !%: # :, B , ! >%( &%L $%+# !
&, ! , 9 * , +&,(#,! &&, *( ! (%&%L !,* %# ,!($%&,
♦ ='-)+)+28 # ,!($% (# #( >, -$(&, $(., $+!%', d d
9 ( ! $ %*$%+#
d -$(&, ! * ( 5 d 9 $,# (# * $%, $ ( &! ?9 ? ( , 9 %# %#:, B $%+# ,5 &
,$7. (# ,$7B-#%B,! ?
2(.)+>, 8
insert into articulos
values ('ARTYYY', 'Artículo de prueba 2', 10.20, NULL,
10);
2(.)+>, 8
insert into articulos ( codart, descrip, precio, stock,
stock_min )
values ('ARTYYY', 'Artículo de prueba 2', 10.20, NULL,
10);
2(.)+>, 8
insert into articulos ( codart, descrip, precio, stock_min)
values ('ARTYYY', 'Artículo de prueba 2', 10.20, 10);
3
?
# $ , )$( & # #$% &'(')* . & (& !, #, >%( &%L !, %#, M( &,
> &, (& # %# ,!($ # # & 5& %#!%$ ! ,B, # & ! :%#%$%+# # %, 9 ! 5
* $%:%$ & 5& ,5 & M( ! &%L & ,* $%+# * , #, # $ %,
* $%:%$ & $,&(B# :$ ! ! 5%K#!, $(B*&% & B%B #, B M( ;#
! $ %,$,# # %, %! !9 (#M( A% &'(# * %$(& %! !8
% A% &'(# $,&(B# $,# !, 9 ! $%9 M( (> &, $ &$(& (,B/%$ B #
$,B, &$ , ! & B ., - ! $+!%', 9 &> &, ! , $ B*, #, *( !
%# ,!($%!, * % ! &, > &, ,5 #%!, # (# # #$% &'(')* * , -&,*,! -#
% &%L (# %# $%+# :%& :%&
(# $, $ %# ,!($$%+# ! ! , $,# ) * ,5 & # #$% &'(')* .
# &%L &, (& !, M( ,5%# # # ! ! :%#% & # #$% +,&'-*
:%# &%L * $%:%$ # (# % ! )B*&, ! %# $%+# ! > % :%& # 5& !
( , * $-:%$,
♦ ='-)+)+28 # ,!($% & -$(&, $(., * $%, B #, ! ( , . $(., ,$7
B #, M( ? # & 5& /'0+-M1-*+).(2& 4)20+P2G:')@1G)201-*G&*2)B 69 !,#!
)20+P2 (# $,&(B# $,# !,
2(.)+>,8
insert into pedir_articulos ( fecha, codart, stock )
select sysdate, codart, stock
from articulos
where ( stock < 50 ) and ( precio < 1.0 );
2(.)+>,8
update articulos set precio = precio * 1.1 ;
3
11 MANEJO AVANZADO DE LOS DATOS
3
?
• (& $,# )5& ! :%#% &B #, (# -#!%$ ! %*, .,+U.' ,$%!, & $&>
* %B % ! ,! & 5& ! & 5 ! ! ,
• ! 5 # # &%L & $,# (& M( B/ %B*, $,# (B #9 * ! :%#% &'C# -#!%$
M( $ & ( )$($%+#
'(%! B # * # # !, )B*&, ! $ $%+# ! -#!%$ 9 B5, ,$%!, (#
$&> * %B %9 * , # (#, ! &&, ,5&%' ! :%#% (# , ! # ! B%# !, # &
&B $ # B%# ,! & %#:, B $%+#
♦ ='-)+)+28 :%#%$%+# ! (# -#!%$ ,5 & $&> * %B % ! $&%#
2(.)+>,8
create unique index ind_codcli_clientes
on clientes ( codcli );
3
12 SOLUCIÓN A LOS EJERCICIOS DE AUTOEVALUACIÓN
9 E 9 9 H3 J ? T?T??"
1 3 1
3
"
9 E 9 9 H3 J ? T?T??"
1 3 1 0
3
<
♦ ='-)+)+2 8 $ %5% (# $,# (& M( ! >( &> &$+!%',. #,B5 ! &, *( 5&, !
& * ,>%#$% ! &&+# %# $&%# , $(., #CB , ! $&%# %! # B #,
M( $,# (& ! 5 ! >,&> B5%K# &#CB ,! $&%# # $ ! *( 5&,
2(.)+>,8
select codpue, p.nombre, count( codcli )
from pueblos p left join clientes c using ( codpue )
where p.codpro = ‘12’
group by codpue, p.nombre
having count( codcli ) < 5 ;
9 E 9 9 H3 J ? T?T??"
1 3 1 =
♦ ='-)+)+2 8 3 #! !, M( # ,! . $ ! (# ! ( :$ ( ! & Q, * !,
> #!% ,# B/ ! -$(&, !% %# , ,&> & ) $%$%,! !, :, B !% %#
2(.)+>,8
select codven, v1.nombre
from vendedores v1 join facturas f1 using ( codven )
join lineas_fac l1 using ( codfac )
where to_number( to_char( f1.fecha, ‘yyyy’ ) ) =
to_number( to_char( sysdate, ‘yyyy’ ) ) – 1
group by codfac, codven, v1.nombre
having count( distinct l1.codart ) > 5
minus
select codven, v2.nombre
from vendedores v2 join facturas f2 using ( codven )
join lineas_fac l2 using ( codfac )
where to_number( to_char( f2.fecha, ‘yyyy’ ) ) =
to_number( to_char( sysdate, ‘yyyy’ ) ) – 1
group by codfac, codven, v2.nombre
having count( distinct l2.codart ) <= 5 ;
3
?
select f1.codven
from facturas f1
where to_number( to_char( f1.fecha, ‘yyyy’ ) ) =
to_number( to_char( sysdate, ‘yyyy’ ) ) – 1 )
and v.codven not in (
select f2.codven
from facturas f2 join lineas_fac l2 using ( codfac )
where to_number( to_char( f2.fecha, ‘yyyy’ ) ) =
to_number( to_char( sysdate, ‘yyyy’ ) ) – 1
and f2.codven is not null
group by codfac, f2.codven
having count( distinct l2.codart ) <= 5 );
9 E 9 9 H3 J ? T?T??"
13 EJERCICIOS AVANZADOS
♦ ='-)+)+2 8 #!%$ $& B # & #(#$%!, M( $, *,#! & %'(%# $,# (&
9 E 9 9 H3 J ? T?T??"
3 a
3
where l.codart = a1.codart)
group by a1.codart, a1.descrip, a1.precio
having a1.precio < avg( a2.precio )
order by 2;
select codart, a1.descrip
from articulos a1 join lineas_fac l using( codart )
join facturas f using( codfac )
where a1.precio <
( select avg( a2.precio ) from articulos a2)
group by codart, a1.descrip
having min( nvl( f.iva,0 ) ) = 16
order by 2;
9 E 9 9 H3 J ? T?T??"
3 a
3
"
9 E 9 9 H3 J ? T?T??"
3 a 0
♦ ='-)+)+2 8 #!%$ $& B # & #(#$%!,M( $, *,#! & %'(%# $,# (&
3
<
3
?
♦ ='-)+)+2 8 #!%$ $& B # & #(#$%!,M( $, *,#! & %'(%# $,# (&
3
where p2.codpro = '12'
and l2.cant <= 5
order by 2, 1;
♦ ='-)+)+2 8 #!%$ $& B # & #(#$%!,M( $, *,#! & %'(%# $,# (&
9 E 9 9 H3 J ? T?T??"
3 a
3
2(.)+>,8
select codcli, c.nombre
from clientes c join facturas f using( codcli )
where to_number( to_char( f.fecha, 'yyyy' ) ) =
to_number( to_char( sysdate, 'yyyy' ) ) – 1
group by codcli, c.nombre
having max( to_number( to_char( f.fecha, 'mm' ) ) ) –
min( to_number( to_char( f.fecha, 'mm' ) ) ) + 1 =
count( to_number( to_char( f.fecha, 'mm' ) ) )
order by 2, 1;
2(.)+>,8 ( 9 , ! # ! B # 9 &$+!%',. &#,B5 ! &, $&%# $,# :$ (
& Q,* !,9 M( $(B*&# M( ( $,B* ; # $,#$ # !, # (# C#%$,B , #
> %, B $,%# $(%>,
9 E 9 9 H3 J ? T?T??"
BIBLIOGRAFÍA