Contactos

Ejemplos de grupo selecto por. Grupo por oferta. ¿Qué es un grupo por operador?

El grupo por oferta se utiliza para determinar los grupos de cadenas de salida a las que se pueden usar las funciones agregadas (CUENTA, MIN, MAX, AVG y suma). Si falta esta propuesta, y se utilizan las funciones agregadas, todas las columnas con los nombres mencionados en SELECT deben incluirse en las funciones agregadas, y estas funciones se aplicarán a todo el conjunto de filas que satisfagan el predicado de la consulta. De lo contrario, todas las columnas de lista de selección que no están incluidas en las funciones agregadas deben aparecer en el grupo por sugerencia. Como resultado, todas las líneas de consulta de salida se dividen en grupos caracterizados por las mismas combinaciones de valores en estas columnas. Después de eso, las funciones agregadas se aplicarán a cada grupo. Cabe tener en cuenta que para el grupo por todos los valores nulos se tratan como iguales, es decir, cuando se agrupan en el campo que contiene enfoques nulos, todas estas líneas caerán en un grupo.

Si, con el grupo por sugerencia, no hay funciones agregadas en la cláusula SELECT, la solicitud simplemente devolverá una línea de cada grupo. Esta característica, junto con la palabra clave distintiva, se puede usar para eliminar las filas duplicadas en el conjunto resultante.

Considere un ejemplo simple:

Llevar a cabo

    Seleccione Modelo, Cuente (modelo) como qty_model,

    Promot (precio) como avg_price

    De PC.

    Grupo por modelo;

Seleccione Modelo, Cuente (modelo) como Qty_Model, AVG (Price) como AVG_PRICE del grupo de PC por modelo;


En esta consulta, su número y su costo promedio se determinan para cada modelo de PC. Todas las filas con los mismos valores de modelo (número de modelo) forman un grupo, y la salida de selección calcula el número de valores y el precio promedio para cada grupo. El resultado de la consulta será la siguiente tabla.

Modelo Qty_model. Avg_price.
1121 3 850
1232 4 425
1233 3 843,333333333333
1260 1 350

Si la selección tenía una columna con la fecha, sería posible calcular estos indicadores para cada fecha específica. Para hacer esto, agregue una fecha como una columna de agrupación, y luego las funciones agregadas se habrían calculado para cada combinación de valores (modelo, fecha).

Hay varias reglas específicas para realizar funciones agregadas.

  • Si no se recibe una cadena (o una sola línea para este grupo) como resultado de la ejecución de la consulta, entonces faltan los datos iniciales para calcular ninguna de las funciones agregadas. En este caso, el resultado de las funciones de conteo será cero, y el resultado de todas las demás funciones es nulo.
    Esta propiedad no siempre puede dar un resultado obvio. Considere, por ejemplo, tal solicitud:
    Llevar a cabo

      Existe (seleccione Max (Precio)

      De PC.


    La subconsia existe, predicado devuelve una línea con NULL como el valor de la columna. Por lo tanto, a pesar del hecho de que la PC con precios negativos no está en la base de datos, la consulta devolverá 1 en el ejemplo.

  • El argumento de la función agregada no puede contener funciones agregadas (función de la función). Es decir, en una pregunta simple (sin subconsultas), no puede, por ejemplo, obtener los valores promedio máximo.
  • El resultado de la función de conteo es un entero (entero). Otras funciones agregadas heredan los tipos de datos de valores procesados.
  • Si, al ejecutar la función SUM, se obtendrá el resultado excediendo el valor máximo posible para el tipo de datos utilizado, se produce un error.
  • Por lo tanto, las funciones agregadas incluidas en la solicitud de selección de propuestas que no contienen la propuesta del grupo se ejecutan sobre todas las filas resultantes de esta solicitud. Si la consulta contiene el grupo por propuesta, cada conjunto de cadenas que tiene los mismos valores de columna o grupo de columnas especificadas en el grupo por sugerencia, conforman las funciones de grupo y agregados para cada grupo por separado.

segundo nombre

Año_rima.

Ivanovich

Petrovich

Mikhailovich

Borisovich

Nikolaevna

Sidorv

Catherine

Ivanovna

Enamorado

Sergeevich

Anatolique

Mikhailovich

Higo. 4.20. Usando como "^ [D-M]%"

Ahora puede crear predicados en términos de enlaces de SQL especialmente definidos. Puede buscar valores en un rango específico (entre) o en el conjunto numérico (IN), o puede buscar valores de caracteres que coincidan con el texto dentro de los parámetros (como).

4.4. Funciones agregadas de grupo por y SQL.

El resultado de la consulta puede ser un valor de grupo generalizado de los campos, de la misma manera que el valor de un campo. Esto se hace utilizando las funciones de agregado SQL estándar, que se muestra a continuación:

Además del caso especial de conteo (*), cada una de estas funciones opera el conjunto de valores de columna de alguna tabla y ofrece un solo valor.

El argumento de todas las funciones, excepto el conteo (*), puede preceder a la palabra clave distintiva (diferente), lo que indica que los valores de la columna duplicada

debe ser excluido antes de que se aplique la función. La función de conteo especial (*) se usa para contar todas las filas sin excepción en la tabla (incluidos los duplicados).

Las funciones agregadas se usan similares a los nombres de los campos en la cláusula de selección de consulta, pero con una excepción: toman los nombres de campo como argumentos. Solo los campos numéricos se pueden usar con suma y AVG.

Cuente, máx y MIN también puede usar campos numéricos o simbólicos. Cuando se usan con campos simbólicos, MAX y MIN los emitirán en un equivalente de código ASCII, que debe informar que el MIN significará el primero, y MAX es el último valor en orden alfabético.

Para encontrar la suma de todos los salarios en la tabla de tabla (Fig. 2.3), debe ingresar la siguiente consulta:

Del personal del departamento;

Y veré el resultado en la pantalla: 46800 (la tabla será una columna con el nombre de la cantidad).

Contando el valor promedio del salario también es simple:

Seleccione AVG ((Salario))

Del personal del departamento;

La función de conteo es algo diferente de todas. Considera la cantidad de valores en esta columna o el número de filas en la tabla. Cuando considere los valores de la columna, se usa con distintos (diferentes) para tener en cuenta el número de valores únicos en este campo.

En la mesa, ocho líneas en las que hay varios valores salariales.

Cabe señalar que en los últimos tres ejemplos, información e información informada se tienen en cuenta.

La siguiente oración le permite determinar el número de unidades en

Distincting, acompañado por el nombre del campo con el que se aplica, se coloca entre paréntesis, con el recuento se aplica a columnas individuales.

Seleccione CUENTA (*)

Del personal del departamento;

La respuesta será:

Cuenta (*) cuenta todo sin excepción a la fila de la tabla.

DISTINT NO APLICA CUENTA C (*).

Supongamos que la tabla es una declaración_-pago (Fig. 2.4) tiene otra columna que almacena la cantidad de deducciones producidas (campo deducción) para cada línea de declaración. Luego, si está interesado en todo el importe, se debe plegar los contenidos de la cantidad de la columna y la deducción.

Si está interesado en la cantidad máxima, teniendo en cuenta las deducciones contenidas en la declaración, esto se puede hacer usando la siguiente oración:

Seleccione MAX (SUM + DEDUCCIÓN)

De la declaración_ pago;

Para cada línea de la tabla, esta consulta agregará el valor del monto del campo con la deducción del valor de campo y seleccione el mayor valor que encontrará.

Grupo por oferta (vuelva a conectar, orden)

La oferta de GROUP BA le permite determinar el subconjunto de valores en un campo especial en términos de otro campo y aplicar la función de la unidad a un subconjunto. Esto hace posible combinar campos y funciones agregadas en una sola oración seleccionada.

Por ejemplo, suponga que desea determinar cuántos empleados se encuentran en cada departamento (la respuesta se muestra en la Fig. 4.21):

Seleccione ID_OTD, COUNT (DISTINT ID_OTD) como Conde_Starters

Empleados del departamento

Fecha de despido

Qty_sotrudnikov

Como resultado de la ejecución del grupo por propuesta, solo los valores únicos de las columnas permanecen, por defecto ascendiendo. En este aspecto, el grupo por oferta es diferente de la oferta de orden por el hecho de que este último, aunque los registros están ascendiendo, pero no elimina los valores repetidos. En el ejemplo especificado, las líneas del grupo de consultas por los valores de la columna ID_OTD (por los departamentos). Las filas con el mismo número de departamentos se combinan primero en grupos, pero solo se muestra una línea para cada grupo. La segunda columna muestra el número de filas en cada grupo, es decir, Número de empleados en cada departamento.

El valor del campo al que se usa el grupo por acuerdo es, por definición, solo se realiza un valor en el grupo de salida, así como la función agregada. El resultado es la compatibilidad que permite que los agregados y los campos se combinen de esta manera.

Supongamos, por ejemplo, el estado de referencia de la tabla tiene la forma de arroz. 4.22 y queremos determinar la cantidad máxima pagada por la declaración a cada empleado.

Tipo de oscilado

Como resultado, obtenemos.

Higo. 4.23. Función agregada con como

La agrupación se puede realizar en varios atributos:

De vedomost1

Grupo por id_sotr, fecha;

Resultado:

Higo. 4.24. Agrupación de múltiples atributos

Si es necesario limitar el número de grupos recibidos después del grupo, luego usando la oferta, puede implementarlo.

4.5. Usando la frase

La frase desempeña el mismo papel para los grupos que la frase en la que se usa para las cadenas: se usa para excluir a los grupos, al igual que cuando se usa para excluir las filas. Esta frase está incluida en la oferta.

solo si hay un grupo de frase, y la expresión en tener debe tomar el único valor para el grupo.

Por ejemplo, permita que sea necesario emitir la composición cuantitativa de todos los departamentos (Fig. 2.3), excluyendo el departamento con el número 3.

Seleccione ID_OTD, CUENTA (DISTINT ID_OTD) AS NÚMERO DE _soters

Empleados del departamento

Fecha de despido

Tener ID_OTD< > 3;

Kol_o_sotnikov

El último elemento al calcular la expresión de la tabla utiliza la sección que tiene (si está presente). La sintaxis de esta sección es la siguiente:

::=

Teniendo

La condición de búsqueda de esta sección especifica la condición para un grupo de cadenas de la tabla agrupada. Formalmente, la sección que tiene la sección también puede estar presente en una expresión tabular que no contiene grupo por. En este caso, se supone que el resultado del cálculo de las secciones anteriores es una tabla agrupada que consiste en un grupo sin columnas de agrupación seleccionadas.

La búsqueda de la condición de búsqueda se basa en las mismas reglas sintácticas que las condiciones de la sección de la sección, y pueden incluir los mismos predicados.

Sin embargo, hay restricciones especiales de sintaxis en el uso de la tabla de especificaciones de la columna de la tabla desde la sección desde esta expresión tabular. Estas restricciones se siguen desde el hecho de que la condición que tiene una condición de búsqueda especifica la condición para un grupo completo, y no en líneas individuales.

Por lo tanto, en las expresiones aritméticas de los predicados incluidos en la condición de muestra de muestra, solo las especificaciones de la columna especificadas a medida que las columnas de agrupación se pueden usar directamente en el grupo por sección. Las columnas restantes se pueden especificar solo dentro de la especificación de las unidades de conteo, suma, AVG, MIN y MAX, que calculan algún valor agregado para todo el grupo de líneas en este caso. La situación es similar a las subconsultas incluidas en los predicados de las condiciones de muestreo: si se usa el siguiente grupo en la subcadealidad, solo se puede configurar por referencia a las columnas de agrupación.

Deje que una solicitud de especies (como tabla base, vea la Fig. 4.22):

Seleccione ID_SOTR, FECHA, MAX ((SUM))

De vedomost1

Grupo por id_sotr, fecha;

se debe aclarar que solo se muestran los pagos excedidos de 1000.

Sin embargo, de acuerdo con la norma, la función agregada en la cláusula WHERE está prohibida (si no usa la subcauja descrita más adelante), porque los predicados se estiman en términos de una sola línea, y las funciones agregadas se estiman en los términos de la grupo de cadenas.

La siguiente oración estará equivocada:

Seleccione ID_SOTR, FECHA, MAX (SUM)

De vedomost1

Donde Max ((Suma))\u003e 1000 Group by ID_SOTR, FECHA;

La propuesta correcta será:

Seleccione ID_SOTR, FECHA, MAX ((SUM))

La agrupación de datos le permite dividir todos los datos a conjuntos lógicos, lo que hace posible realizar cálculos estadísticos por separado en cada grupo.

1. Creación de grupos (grupo por)

Los grupos son creados por la oferta. Agrupar por. Operador SELECCIONE. Considere en el ejemplo.

SELECCIONE Producto, suma (cantidad) como Product_num del grupo SumProduct por producto

Mediante esta solicitud, hemos extraído información sobre el número de productos vendidos en cada mes. Operador SELECCIONE Pedidos para traer dos columnas. Producto - Nombre del producto y Product_num. - El campo calculado que creamos para mostrar la cantidad de productos implementados (Fórmula de suma (Cantidad). Oración Agrupar por. Especifica el DBMS para agrupar datos en una columna Producto. También debe tenerse en cuenta que Agrupar por. debe ir tras la oferta Dónde. Y antes Ordenar por..

2. Grupos de filtrado (teniendo)

Justo cuando filtramos filas en la tabla, podemos hacer filtros de acuerdo con los datos agrupados. Para esta B. Sql Hay un operador Teniendo. Tome el ejemplo anterior y agregue filtrado por grupos.

SELECCIONE Producto, suma (cantidad) como Product_num del grupo SumProduct por producto que tiene suma (Cantidad)\u003e 4000

Vemos que después de que la cantidad de bienes implementados se contó en el contexto de cada producto, los DBMS "Cortar" aquellos productos que implementaron menos de 4,000 PC.

Como puedes ver al operador. Teniendo muy similar al operador Dónde.Sin embargo, entre ellos tienen una diferencia significativa: Dónde. Filtra los datos antes de agruparse, y Teniendo - Realiza filtración después de la agrupación. Así, las líneas que fueron retiradas por la oferta. Dónde. No se incluirá en el grupo. Entonces, operadores Dónde. y Teniendo Se puede utilizar en una oración. Considere un ejemplo:

SELECCIONE Producto, suma (cantidad) como Product_num de SumProduct donde el producto<>Grupo de "Skis Long" por producto que tiene suma (Cantidad)\u003e 4000

Añadimos el operador al ejemplo anterior. Dónde.donde indicaban las mercancías Esquís largos.que a su vez influyó en la agrupación del operador Teniendo. Como resultado vemos que los bienes. Esquís largos. No entró en la lista de grupos con la cantidad de productos implementados más de 4000 PC.

3. Agrupación y clasificación.

Al igual que con la muestra habitual de datos, podemos ordenar grupos después de agrupar por operador Teniendo. Para hacer esto, podemos usar al operador ya familiar para nosotros. Ordenar por.. En esta situación, sus aplicaciones son similares a los ejemplos anteriores. Por ejemplo:

SELECCIONE Producto, suma (cantidad) como Product_num del grupo SumProduct por producto que tiene suma (Cantidad)\u003e 3000 Pedido por suma (Cantidad)

o simplemente apunte al número de campo para el que queremos ordenar:

SELECCIONE Producto, suma (cantidad) como Product_num del grupo SumProduct por producto que tiene suma (Cantidad)\u003e 3000 orden por 2

Vemos que para clasificar los resultados sumarios, necesitamos simplemente registrar ofertas de Ordenar por. Despues del operador Teniendo. Sin embargo, hay un matiz. Acceso DBMS. No admite la clasificación de grupos en seudónimos de columnas, es decir, en nuestro ejemplo, para ordenar los valores, no podremos registrarnos al final de la solicitud. Orden por producto_num.

En el marco de este artículo, le diré cómo se realiza los datos, cómo aplicar correctamente el grupo y tener dentro de las consultas SQL en el ejemplo de varias solicitudes.

La mayoría de la información en las bases de datos se almacenan en forma detallada. Sin embargo, a menudo la necesidad de obtener informes. Por ejemplo, aprenda el número total de comentarios del usuario o puede ser la cantidad de productos en los almacenes. Tareas similares masivas. Por lo tanto, en lenguaje SQL, es específicamente para tales casos, se proporcionan grupos y que tienen estructuras, permiten, respectivamente, a agrupar y filtrar los grupos de datos obtenidos.

Sin embargo, su uso provoca muchos problemas de los autores principiantes de creaciones de software. No interpretan los resultados obtenidos y el mecanismo de agrupación de datos en sí. Por lo tanto, vamos a resolverlo en la práctica, qué y cómo está sucediendo.

Como parte del ejemplo, consideraré solo una mesa. La razón es simple, estos operadores ya se aplican a la selección de datos obtenidos (después de combinar las filas de tablas y su filtrado). Entonces, de agregar dónde y unirse a los operadores, la esencia no cambiará.

Imagina un ejemplo abstracto. Supongamos que tiene una tabla resumen de usuarios del foro. Llamemos a su usuario y parece que lo siguiente. Un punto importante, creemos que el usuario puede consistir solo en un grupo.

usuario_name - nombre de usuario

forum_Group - Nombre del grupo

mess_Count - Número de mensajes

is_have_social_profile - es el enlace de perfil del foro a una página de red social

Como puede ver, la mesa es simple y muchas cosas se pueden contar en la calculadora. Sin embargo, esto es solo un ejemplo y solo hay 10 entradas. En bases reales, la grabación se puede medir por miles. Por lo tanto, proceder a las solicitudes.

Agrupación neta utilizando grupo por

Imagine que necesitamos saber el valor de cada grupo, a saber, el valor promedio de la calificación de los usuarios en el grupo y el número total de mensajes que quedan en el foro.

Al principio, una pequeña descripción verbal para facilitar la comprensión de la consulta de SQL. Por lo tanto, debe encontrar los valores calculados por los grupos del foro. En consecuencia, debe compartir todas estas diez líneas para tres grupos diferentes: Admin, Moder, Usuario. Para hacer esto, debe agregar un grupo al final del campo Forum_Group al final de la consulta. Y también agregue expresiones calculadas para seleccionar utilizando las siguientes funciones agregadas.

Especifique los campos y seleccione Seleccione Columnas de FUBO_GROUP, AVG (Raining) como AVG_RATION, SUM (MESS_COUNT) como total_mess_count: especifique la tabla de UserStat: especifique el grupo por el grupo por el grupo_group

Tenga en cuenta que después de usar el grupo por diseño en la consulta, puede usar solo los campos seleccionados, que se enumeran después del grupo por, sin aplicar funciones agregadas. Los campos restantes deben indicarse dentro de las funciones agregadas.

También utilicé dos funciones agregadas. AVG - Calcula el valor promedio. Y suma - calcula la cantidad.

forum_Group.avg_raitingtotal_mess_count.
administración. 4 50
moder. 3 50
usuario. 3 150

1. Al principio, todas las filas de la tabla de origen se dividieron en tres grupos por los valores del campo Forum_Group. Por ejemplo, hubo tres usuarios dentro del grupo de administración. Dentro de los moderadores también 3 líneas. Y dentro del grupo de usuarios hubo 4 líneas (cuatro usuarios).

2. Luego, para cada grupo utilizado funciones agregadas. Por ejemplo, para el grupo de administración, la calificación promedio se calculó por lo que (2 + 5 + 5) / 3 \u003d 4. El número de mensajes se calculó por lo que (10 + 15 + 25) \u003d 50.

Como puedes ver, nada complicado. Sin embargo, aplicamos solo una condición de agrupación y no aplicó el filtrado en grupos. Por lo tanto, procedemos al siguiente ejemplo.

Agrupación utilizando grupos de grupo y filtrado con tener

Ahora, considere un ejemplo de agrupación de datos más complejos. Supongamos que debemos evaluar la efectividad de las acciones para atraer a los usuarios a actividades sociales. Si es simple, averigüe cuántos usuarios en los grupos dejaron enlaces a sus perfiles, y cuánto ignoró el correo y así sucesivamente. Sin embargo, en la vida real de tales grupos puede haber mucho, por lo que necesitamos filtrar los grupos que pueden descuidar (por ejemplo, muy pocas personas no dejaron el enlace; por qué calendan un informe completo). En mi ejemplo, este es un grupo donde solo un usuario.

Primero, buscamos lo que necesita hacer en la solicitud de SQL. Necesitamos todas las filas de la tabla de origen UserStat dividida por las siguientes características: el nombre del grupo y la disponibilidad de un perfil social. En consecuencia, es necesario agrupar los datos de la tabla en los campos Forum_Group y is_Have_Social_Profile. Sin embargo, no estamos interesados \u200b\u200ben aquellos grupos donde solo una persona. En consecuencia, tales grupos deben ser filtrados.

Nota: Está digno de saber que esta tarea podría resolverse y agrupar solo un campo. Si usa el diseño de la caja. Sin embargo, en el marco de este ejemplo, se muestran las capacidades de la agrupación.

También me gustaría aclarar inmediatamente un punto importante. Puede filtrar usando solo cuando se aplica las funciones agregadas, y no en campos separados. En otras palabras, este no es un diseño donde se trata de un filtro de grupos de cadenas y no separados. Aunque las condiciones internas se definen de la misma manera usando "o" y ".

Así es como se verá la solicitud de SQL

Especifique los campos y seleccione Seleccione Forum_Group, is_have_social_profile, cuenta (*) como total: especifique la tabla de usuario de UserStat: especifique el grupo por el grupo por FUBO_GROUP, IS_HAVE_SOCIAL_PROFILE: indique el filtro de grupo de conteo\u003e 1

Tenga en cuenta que los campos después del grupo por diseño están indicados por comas. La especificación de campos en SELECT se produce de la misma manera que en el ejemplo anterior. Además, utilicé la función de agregado de conteo, que calcula el número de filas en grupos.

Aquí está lo que resultó el resultado:

forum_Group.is_have_social_profile.total
administración. 1 2
moder. 1 2
usuario. 0 3

Veamos los pasos, ya que resultó este resultado.

1. Inicialmente, se obtuvieron 6 grupos. Cada uno de los grupos para Forum_Group se dividió en dos subgrupos por los valores del campo is_have_social_profile. En otras palabras, el grupo :,,,,,,

Nota: Por cierto, los grupos no tendrían ninguno necesario 6. Por ejemplo, si todos los administradores llenaran el perfil, entonces los grupos serían 5, ya que el campo is_have_social_profile tendría un solo valor entre los usuarios del grupo de administración.

2. Luego, para cada grupo, se aplicó la condición de filtrado a tener. Por lo tanto, se excluyeron los siguientes grupos :,, Dado que solo una línea de la tabla de origen estaba presente dentro de cada grupo.

3. Después de eso, se calcularon los datos necesarios y se obtuvo el resultado.

Como puedes ver, nada es difícil de usar.

Vale la pena saber que dependiendo de la base de datos, las capacidades de estas estructuras pueden diferir. Por ejemplo, las funciones agregadas pueden ser mayores que o pueden ser indicadas como un campo no se agrupa, sino las columnas calculadas. Esta información ya es necesaria para mirar en la especificación.

Ahora, ya sabe cómo aplicar la agrupación de datos con el grupo por, así como los grupos de filtros con tener.


Ruesa la solicitud de selección del plan de ejecución interna ("Plan de consulta"), que puede diferir incluso para solicitudes tan sintácticamente idénticas y de un DBMS específico.

La instrucción SELECT consiste en varias propuestas (secciones):

  • Seleccione Define una lista de columnas devueltas (tanto existentes como calculadas), sus nombres, restricciones a la singularidad de las cadenas en el conjunto de devolución, restricciones en el número de filas en el conjunto devuelto;
  • Desde Establece una expresión tabular que determina el conjunto de datos básicos para aplicar las operaciones definidas en las propuestas de otros operadores;
  • Donde especifique la restricción en las líneas de expresión de la tabla de la oferta de la oferta;
  • El grupo combina las filas que tienen la misma propiedad utilizando funciones agregadas.
  • Tener elige entre los grupos definidos por el grupo por parámetro.
  • Orden al especifica los criterios para clasificar cuerdas; Las líneas ordenadas se transmiten al punto de llamada.

Estructura del operador.

La instrucción SELECT tiene la siguiente estructura:

Seleccione [distinto | | Distinctrow | Todos] select_expression, ... de la Tabla_Reference [GRUPO por UNSIGNED_INTEGER | COL_NAME | FORMULA)] [Tener Donde_Definición] [Ordenar por (insigned_integer | col_name | fórmula) [asc | DESC], ...]

Parámetros del operador

Ordenar por.

Pedido por: Parámetro Operador opcional (opcional) SELECCIONE y unión, lo que significa que los operadores SELECCIONE Unión devuelva un conjunto de cuerdas ordenadas por valores de una o más columnas. Puede usarse tanto a las columnas numéricas como a la cadena. En este último caso, la clasificación ocurrirá alfabéticamente.

El uso de la oferta de pedido por es la única forma de ordenar el conjunto de filas resultantes. Sin esta propuesta, los DBMS pueden devolver las cadenas en cualquier orden. Si el pedido es necesario, el pedido debe estar presente en Select, Union.

La clasificación se puede hacer tanto los valores ascendentes como descendentes.

  • El parámetro ASC (predeterminado) establece el orden de clasificación ascendente, desde valores más pequeños a grandes.
  • El parámetro DESC establece el orden de clasificación descendente, desde valores grandes hasta el menor.

Ejemplos

Seleccione * de T;

C1. C2.
1 uNA.
2 b.
C1. C2.
1 uNA.
2 b.

Seleccione C1 de T;

C1.
1
2
C1. C2.
1 uNA.
2 b.
C1. C2.
1 uNA.
C1. C2.
1 uNA.
2 b.
C1. C2.
2 b.
1 uNA.

Para la solicitud de la Tabla T

Seleccione * de T;

devuelve todas las columnas de todas las líneas de esta tabla. Para la misma solicitud de tabla.

Seleccione C1 de T;

los valores de la columna C1 devolverán todas las filas de la tabla, en términos de álgebra relacional. proyección. Para la misma solicitud de tabla.

devuelve los valores de todas las columnas de todas las filas de la tabla, en las que se puede decir que el valor del campo C1 es "1", en términos de álgebra relacional que se realizó muestraYa que hay una palabra clave donde. Última petición

Seleccione * de T Orden por C1 Desc;

las mismas cadenas volverán a la primera, pero el resultado se ordenará en orden inverso (Z-A) debido al uso de la palabra clave del pedido con el campo C1 como campo de clasificación. Esta consulta no contiene una palabra clave donde devolverá todo en la tabla. Se pueden indicar varios elementos de pedido por comas [por ejemplo,. Orden por C1 ASC, C2 DESC] para una clasificación más precisa.

Selecciona todas las líneas donde el campo Column_Name es igual a uno de los valores listados de Value1, Value2, ...

Devuelve una lista de identificadores de departamentos, las ventas superaron los 1000 dólares para el 1 de enero de 2000, junto con las importaciones de ventas para este día:

Restricción de cadena devuelta

Según ISO SQL: 2003, el conjunto de datos devuelto puede estar limitado utilizando:

  • administración funciones de la ventana En la declaración SELECT

Función de la ventana de Row_Number ()

Hay diferentes funciones de la ventana. Row_Number () se puede utilizar para límite simple El número de líneas devueltas. Por ejemplo, para volver más de diez líneas:

Row_Number puede ser no determinista: si clave No único, cada vez que cumpla con la solicitud, es posible asignar diferentes números a las filas que clave coincide. Cuándo clave Único, cada cadena siempre recibirá un número de línea único.

Rango de la función de la ventana ()

La función () sobre la función funciona casi igual que Row_Number, pero puede devolver más de nORTE. Líneas bajo ciertas condiciones. Por ejemplo, para obtener el Top 10 de las personas más jóvenes:

Este código puede devolver más de 10 líneas. Por ejemplo, si hay dos personas con la misma edad, devolverá 11 líneas.

Sintaxis no estándar

No todos los DBMS admiten las funciones de la ventana anterior. Al mismo tiempo, muchos tienen una sintaxis no estándar para resolver las mismas tareas. A continuación hay opciones límite simple Muestras para varios DBMS:

Fabricante / DBMS Restricciones de sintaxis
DB2. (Admite estándar, comenzando con DB2 versión 6)


¿Te gustó el artículo? Compártelo