ayuda con una consulta

30/11/2007 - 21:53 por SergioT | Informe spam
Éste es un mensaje de varias partes en formato MIME.
=_NextPart_000_000A_01C83371.97CE2650

hola
una consulta que me parece no es muy dificil pero no me sale ( sql 2000)

Tengo una tabla mas o menos asi

tabla
oficina, jefe,vendedor,CantidadVentas
a 1 juan 7
a 1 pedro 8
a 1 pablo 9
a 2 marco 5
a 2 ttito 8
a 3 antonio 2
a 3 paula 10
a 3 marcia 7


necesito obtener una tabla asi:

oficina, jefe,vendedor,CantidadVentas
a 1 pablo 9
a 2 tito 8
a 3 paula 10

como ven necesito obtener a los vendedores con mas ventas por cada jefe de ventas

salu2
y gracias de antemano
=_NextPart_000_000A_01C83371.97CE2650

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.6000.16544" name=GENERATOR></HEAD>
<BODY id=MailContainerBody
style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"
bgColor=#ffffff leftMargin=0 topMargin=0 CanvasTabStop="true"
name="Compose message area">
<DIV>hola<BR>una consulta que me parece no es muy dificil pero no me sale ( sql
2000)<BR><BR>Tengo una tabla mas o menos asi<BR><BR>tabla<BR>oficina,
jefe,vendedor,CantidadVentas<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
juan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
7<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pedro&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
8<BR><STRONG>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pablo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
9</STRONG><BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
marco&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
5<BR><STRONG>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ttito&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
8</STRONG><BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
antonio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;
<BR><STRONG>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
paula&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10</STRONG></DIV>
<DIV>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
marcia&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7<BR><BR><BR>necesito obtener
una tabla asi:<BR><BR>oficina,
jefe,vendedor,CantidadVentas<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pablo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
9<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
tito&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
8<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
paula&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10<BR><BR>como ven necesito
obtener a los vendedores con mas ventas por cada jefe de
ventas<BR><BR>salu2<BR>y gracias de antemano</DIV></BODY></HTML>

=_NextPart_000_000A_01C83371.97CE2650--

Preguntas similare

Leer las respuestas

#6 Martín
01/12/2007 - 20:31 | Informe spam
Les pido disculpas
no lo había leído detenidamente, me morfé lo del mismo jefe.

Si claro, sería mejor debatirlo por acá, sólo que no quise abusar del grupo
para debatir cosas...y no me pareció apropiado, pero tienes razón, cuantas
más cabezas veamos algo mejor será.

salvo la solución, que les pido disculpas, sigo afirmando lo anterior,
aunque no para este caso claro está
Respuesta Responder a este mensaje
#7 Carlos M. Calvelo
01/12/2007 - 23:34 | Informe spam
Hola Martín,

On 1 dec, 19:47, "Martín" wrote:
Hola Carlos,

1) La solución que propuse es correcta para el problema dado.




Pensaba que ya te habías dado cuenta de que no es así.
Veo que ya ha sido aclarado eso.

2)

"No tiene por qué recorrer más veces la tabla. Pero para
cada grupo de vendedores bajo un jefe de alguna forma
habrá que determinar la mayor de las cantidades de ventas
(max) y el vendedor que las hizo para encontrar respuesta
a la pregunta que hizo Sergio."

No soy experto de db, pero he trabajado y leido bastante, y creo que un join
aumenta tus ordenes (tiempos), pero si no es así




Pero si es necesario, es necesario.
Sumar variables también cuesta tiempo y si hay que
sumar pues hay que sumar.

3)

"Es totamente irrelevante cuanta columnas tenga la tabla ocupación.
Y no se trata solo de 'no repetir información' sino de evitar
anomalías que eso conlleva al actualizar los datos."

Por eso aclaré que no era una tabla de mantenimiento, fue un ejemplo para
demostrar que no siempre los libros tienen la razón




Que era un ejemplo que no venia a cuento. Porque yo en
la solución al problema de Sergio ni había utilizado joins.

Y que, en general, los libros no tienen siempre la razón
te lo puedo asegurar yo.


4)

"Totalmente en desacuerdo con esto último. Si solo se trata de un
campo o de mil es totalmente irrelevante.

Lo relevante son las respuestas a preguntas como:
Deben existir ocupaciones sin que tengamos clientes con esa
ocupación?
Donde está la ocupación 'ing sistemas' cuando todos los
clientes con esa ocupación han sido borrados?
Se acepta gestionar la redundancia en la tabla clientes?
(cuando se cambie el nombre de una ocupación se tiene
que cambiar para todos los clientes, que pueden ser miles,
millones?? con la misma ocupación.)
Puede que el mantetimiento de ocupaciones posibles y eventualmente
estandarizadas dentro de la organización, sea resposabilidad
de otro usuario y/o aplicación que el que hace el mantenimiento
de los clientes?"

Creo que es muy relevante la cantidad de campos que tengay estaría bueno
seguir debatiendolo...alguno tiene la razón, y lo mejor es que el que la
tenga convenza al otro, así los dos aprenderemos,.




Y yo digo que es muy relevante no tener entidades distintas
en la misma tabla.


5)

"Parece que le tienes manía a los joins. Los joins saben hacer
muy buen uso de índices para que la diferencia en rapidez
sea inapreciable."

mmm, tal vez sí...pero repito...creo que la cantidad de joins entre tablas
aumenta el tiempo de la consulta...(hablando de tablas grandes con muchos
registros)



Y la cantidad de registros también aumenta el tiempo de
consulta. Pues registra menos registros. :-)
Te estás olvidado de los índices. Precisamente con tablas
con muchos registros es cuando estos van a ayudar muchísimo.
Piensa también en vistas indizadas.


6) "Se puede debatir lo que quieras. En general estoy muy en
desacuerdo con la idea general de tu aportación."

Bueno, me interesa seguir el debate, porque uno tiene la razón, y estaría
bueno que el que no la tenga sepa porque no la tiene



Tu estás hablando de aspectos físicos y yo estoy hablando
del diseño lógico. Si un join es necesario pues es necesario.
Si se quiere evitar tendrá que hacerse sin romper la lógica
de diseño que nos ha llevado a tener tablas separadas.
Y eso puede tener consecuencias mucho mas negativas en otro aspectos.

No está muy claro que es lo que quieres discutir.
Lo que es aconsejable en un caso no lo es en el otro.
Lo que le conviene a un determinado tipo de consultas
lo le conviene a otras. Etc, etc.

Saludos,
Carlos
Respuesta Responder a este mensaje
#8 Martín
02/12/2007 - 03:27 | Informe spam
Creo que parecemos 2 borrachos! je,
Releí nuevamente los mensajes, y sin duda estamos pensando en cosas
distintas...
y tal vez las diferencias mayores arranquen en como identificamos una
entidad, y por tanto todo lo que sigue es consecuencia de lo último.
Si identificamos de manera distinta una entidad, sin duda nunca vamos a
estar de acurdo en el MER

pero bueno...como dices tu, no hay más nada que debatir por ahora.

Martín
Respuesta Responder a este mensaje
#9 SergioT
03/12/2007 - 20:22 | Informe spam
Gracias estimado!!!

La verdad la solución que muestras estaba bien fácil uno nunca termina de
aprender,

muchas gracias
Salu2
Sergio


"Carlos M. Calvelo" escribió en el mensaje de
noticias:
Hola Sergio,

On 30 nov, 21:53, "SergioT" wrote:
hola
una consulta que me parece no es muy dificil pero no me sale ( sql 2000)

Tengo una tabla mas o menos asi

tabla
oficina, jefe,vendedor,CantidadVentas
a 1 juan 7
a 1 pedro 8
a 1 pablo 9
a 2 marco 5
a 2 ttito 8
a 3 antonio 2
a 3 paula 10
a 3 marcia 7

necesito obtener una tabla asi:

oficina, jefe,vendedor,CantidadVentas
a 1 pablo 9
a 2 tito 8
a 3 paula 10

como ven necesito obtener a los vendedores con mas ventas por cada jefe
de ventas




Por oficina, por jefe de ventas:

select *
from tabla T
where CantidadVentas > (select max(CantidadVentas)
from tabla
where oficina = T.oficina and jefe = T.jefe )

Si tiene que ser solo por jefe de ventas no incluyas
el 'oficina = T.oficina' en el where de la subconsulta.

Saludos,
Carlos
Respuesta Responder a este mensaje
#10 SergioT
03/12/2007 - 20:26 | Informe spam
Éste es un mensaje de varias partes en formato MIME.
=_NextPart_000_007B_01C835C0.D7534250

Gracias por tu sugerencia pero no es lo que necesito, lo que quiero no son los 3 primeros si los vendedores con mas ventas en cada grupo de ventas

gracias por tu tiempo
"Martín" escribió en el mensaje de noticias:uzc%23b$
select TOP 3 *
from tabla
order by CantidadVentas desc

probalo, pero la idea es esa.
"SergioT" escribió en el mensaje news:
hola
una consulta que me parece no es muy dificil pero no me sale ( sql 2000)

Tengo una tabla mas o menos asi

tabla
oficina, jefe,vendedor,CantidadVentas
a 1 juan 7
a 1 pedro 8
a 1 pablo 9
a 2 marco 5
a 2 ttito 8
a 3 antonio 2
a 3 paula 10
a 3 marcia 7


necesito obtener una tabla asi:

oficina, jefe,vendedor,CantidadVentas
a 1 pablo 9
a 2 tito 8
a 3 paula 10

como ven necesito obtener a los vendedores con mas ventas por cada jefe de ventas

salu2
y gracias de antemano
=_NextPart_000_007B_01C835C0.D7534250

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content=text/html;charset=iso-8859-1>
<META content="MSHTML 6.00.6000.16544" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY id=MailContainerBody
style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"
bgColor=#ffffff leftMargin=0 topMargin=0 CanvasTabStop="true"
name="Compose message area">
<DIV><FONT face=Arial size=2>Gracias por tu sugerencia pero no es lo que
necesito, lo que quiero no son los 3 primeros si los vendedores con mas ventas
en cada grupo de ventas</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>gracias por tu tiempo</FONT></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Martín" &lt;<A
href="mailto:"></A>&gt;
escribió en el mensaje de
noticias:uzc%23b$</DIV>
<DIV><FONT face=Arial size=2>select TOP 3 *</FONT></DIV>
<DIV><FONT face=Arial size=2>from tabla</FONT></DIV>
<DIV><FONT face=Arial size=2>order by CantidadVentas desc</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>probalo, pero la idea es esa.</FONT></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"SergioT" &lt;<A
href="mailto:"></A>&gt; escribió
en el mensaje <A
href="news:">news:</A>...</DIV>
<DIV>hola<BR>una consulta que me parece no es muy dificil pero no me sale (
sql 2000)<BR><BR>Tengo una tabla mas o menos asi<BR><BR>tabla<BR>oficina,
jefe,vendedor,CantidadVentas<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
juan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
7<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pedro&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
8<BR><STRONG>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pablo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
9</STRONG><BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
marco&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
5<BR><STRONG>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ttito&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
8</STRONG><BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
antonio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;
<BR><STRONG>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
paula&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10</STRONG></DIV>
<DIV>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
marcia&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7<BR><BR><BR>necesito
obtener una tabla asi:<BR><BR>oficina,
jefe,vendedor,CantidadVentas<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pablo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
9<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
tito&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
8<BR>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
paula&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10<BR><BR>como ven necesito
obtener a los vendedores con mas ventas por cada jefe de
ventas<BR><BR>salu2<BR>y gracias de
antemano</DIV></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>

=_NextPart_000_007B_01C835C0.D7534250--
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida