Lista SELECT
La lista SELECT designa un nombre a las columnas, funciones y expresiones que desea que la consulta devuelva. La lista representa el resultado de la consulta.
Para obtener más información sobre las funciones SQL, consulte Referencia de funciones SQL. Para obtener más información sobre las expresiones, consulte Expresiones condicionales.
Sintaxis
SELECT [ TOP number ] [ ALL | DISTINCT ] * | expression [ AS column_alias ] [, ...]
Parámetros
- TOP number
-
TOP toma un entero positivo como su argumento, lo que define la cantidad de filas que se devuelven al cliente. El comportamiento con la cláusula TOP es el mismo que el comportamiento con la cláusula LIMIT. El número de filas devueltas es fijo, pero el conjunto de filas no lo es. Para devolver un conjunto de filas coherente, utilice TOP o LIMIT junto con la cláusula ORDER BY.
- ALL
-
Palabra clave redundante que define el comportamiento predeterminado si no se especifica DISTINCT.
SELECT ALL *
significa lo mismo queSELECT *
(se seleccionen todas las filas de todas las columnas y se mantienen los duplicados). - DISTINCT
-
Opción que elimina las filas duplicadas del conjunto de resultados basándose en los valores coincidentes de una o más columnas.
nota
Si su aplicación admite claves externas o principales no válidas, algunas consultas podrían devolver resultados incorrectos. Por ejemplo, una consulta SELECT DISTINCT podría devolver filas duplicadas si la columna de clave principal no contiene todos los valores únicos. Para obtener más información acerca de estas restricciones, consulte Definición de restricciones de tabla.
- * (asterisco)
-
Devuelve todo el contenido de la tabla (todas las columnas y filas).
- expresión
-
Una expresión formada a partir de una o más columnas que existen en las tablas a las que hace referencia la consulta. Una expresión puede contener funciones SQL. Por ejemplo:
avg(datediff(day, listtime, saletime))
- AS column_alias
-
Un nombre temporal para la columna que se utiliza en el conjunto de resultados finales. La palabra clave AS es opcional. Por ejemplo:
avg(datediff(day, listtime, saletime)) as avgwait
Si no se especifica un alias para una expresión que no sea un nombre de columna simple, el conjunto de resultados aplica un nombre predeterminado a esa columna.
nota
El alias se reconoce justo después de definirlo en la lista de destino. Puede usar un alias en otras expresiones definidas después de él en la misma lista objetivo. En el siguiente ejemplo, se ilustra este caso.
select clicks / impressions as probability, round(100 * probability, 1) as percentage from raw_data;
La referencia de alias lateral aporta un beneficio en el sentido de que no es necesario repetir la expresión con alias cuando se crean expresiones más complejas en la misma lista objetivo. Cuando Amazon Redshift analiza este tipo de referencia simplemente incorpora los alias definidos previamente. Si en la cláusula
FROM
hay una columna definida con el mismo nombre que en la expresión con alias anterior, tendrá prioridad la columna de la cláusulaFROM
. Por ejemplo en la consulta anterior si hay una columna denominada "probability" en la tabla raw_data, la "probability" de la segunda expresión en la lista objetivo hace referencia a dicha columna en vez de hacer referencia al nombre de alias "probability".
Notas de uso
TOP es una extensión SQL; proporciona una alternativa al comportamiento LIMIT. No se puede usar TOP y LIMIT en la misma consulta.
Ejemplos
En el siguiente ejemplo, se devuelven 10 filas desde la tabla SALES. Aunque la consulta usa la cláusula TOP, sigue devolviendo un conjunto de filas impredecible porque no se especifica ninguna cláusula ORDER BY,
select top 10 * from sales;
La siguiente consulta es funcionalmente equivalente, pero usa una cláusula LIMIT en lugar de una cláusula TOP:
select * from sales limit 10;
En el siguiente ejemplo se devuelven las primeras 10 filas de la tabla SALES con la cláusula TOP, ordenadas por la columna QTYSOLD en orden descendente.
select top 10 qtysold, sellerid from sales order by qtysold desc, sellerid; qtysold | sellerid --------+---------- 8 | 518 8 | 520 8 | 574 8 | 718 8 | 868 8 | 2663 8 | 3396 8 | 3726 8 | 5250 8 | 6216 (10 rows)
El ejemplo siguiente devuelve los primeros dos valores QTYSOLD y SELLERID de la tabla SALES, ordenados por la columna QTYSOLD:
select top 2 qtysold, sellerid from sales order by qtysold desc, sellerid; qtysold | sellerid --------+---------- 8 | 518 8 | 520 (2 rows)
El siguiente ejemplo muestra la lista de grupos de categorías distintos de la tabla CATEGORY:
select distinct catgroup from category order by 1; catgroup ---------- Concerts Shows Sports (3 rows) --the same query, run without distinct select catgroup from category order by 1; catgroup ---------- Concerts Concerts Concerts Shows Shows Shows Sports Sports Sports Sports Sports (11 rows)
El ejemplo siguiente devuelve el conjunto distinto de números de semana de diciembre de 2008. Sin la cláusula DISTINCT, la instrucción devolvería 31 filas o una para cada día del mes.
select distinct week, month, year from date where month='DEC' and year=2008 order by 1, 2, 3; week | month | year -----+-------+------ 49 | DEC | 2008 50 | DEC | 2008 51 | DEC | 2008 52 | DEC | 2008 53 | DEC | 2008 (5 rows)