función de ventana de la colmena, función de análisis
1 funciones de análisis: para el nivel, puntos, y otros n-fragmentación
NTILE Colmena es un medio muy poderoso funciones de análisis.
Se puede ver: es el conjunto ordenado de datos asignados al número medio de cubos (NUM) especificados, el número cubo asignado a cada fila. Si no se distribuye de manera uniforme, el número de la prioridad asignada barril más pequeño, y el número de filas de cada cubo puede poner hasta 1 diferencia.
La sintaxis es:
NTILE (NUM) sobre ([partition_clause] order_by_clause) AS your_bucket_num
El número de barriles puede entonces, o después de n datos antes de la selección de las partes por.
Ejemplos:
Para el usuario correspondiente a cada tabla de información de usuario y el consumidor, calcula el consumo medio de 50% de la gastado antes de que el usuario;
- la tabla de usuario y el consumo, el consumo disminuyó secuencialmente dividido en dos partes por el promedio
gota Tabla SI EXISTE test_by_payment_ntile;
Crear tabla test_by_payment_ntile AS
SELECT
Nick,
Pago,
el NTILE (2) La (el ORDER BY desc Pago) el AS RN
de test_nick_payment;
- calcular un valor medio cada respectivamente, pueden obtener un 50% y 50% post-consumo adelante consumo medio
SELECT
'avg_payment' AS INF,
t1.avg_payment_up_50 AS avg_payment_up_50,
t2.avg_payment_down_50 AS avg_payment_down_50
de
(SELECT
AVG (Pago ) AS avg_payment_up_50
de test_by_payment_ntile
DONDE RN = 1.
) T1
la de Ingreso
(SELECT
AVG (Pago) AS avg_payment_down_50
de test_by_payment_ntile
DONDE RN = 2
) T2
ON (= t1.dp_id t2.dp_id);
Rango, DENSE_RANK, ROW_NUMBER
SQL es muy familiarizado con los tres grupos dentro de la función de clasificación. Al igual que la sintaxis:
R () sobre (partición por col1 col2 ... por fin ... desc / asc)
seleccionar
class1,
puntuación,
rango () sobre (partición por orden class1 por desc score) RK1,
DENSE_RANK () sobre (partición por orden class1 por desc score) RK2,
row_number () sobre (partición por orden class1 por desc score) RK3
de zyy_test1;
Diferencia:
Rango tienen el mismo valor, el mismo número de secuencia de salida, y el siguiente número de secuencia ininterrumpida;
DENSE_RANK tienen el mismo valor, la salida del mismo número, pero en un número, intermitente
Los diferentes valores en todo el número row_number salidas, número de serie única continua;
2. La función de ventana Lag, plomo, FIRST_VALUE, LAST_VALUE
Lag, plomo
GAL (col, n, DEFAULT) hasta un valor en la ventana de estadísticas fila enésima
LEAD (col, n, DEFAULT) hasta el n-ésimo valor de la ventana de estadísticas de fila, y el GAL opuesto
- Después de que el grupo ordenado, se movió hacia adelante o hacia atrás
- si se omite el tercer parámetro, el valor predeterminado es NULL, de lo contrario llenar.
seleccionar
DP_ID,
mt,
pago,
LAG (mt, 2) sobre (partición por orden DP_ID por mt) mt_new
de test2;
- Después de que el grupo ordenado, se movió hacia adelante o hacia atrás
- si se omite el tercer parámetro, el valor predeterminado es NULL, de lo contrario llenar.
seleccionar
DP_ID,
mt,
pago,
LEAD (mt, 2, '1111-1111') sobre (partición por orden DP_ID por mt) mt_new
de test2;
FIRST_VALUE, LAST_VALUE
FIRST_VALUE: después de tomar los paquetes ordenados a la línea de corte de corriente, un primer valor
last_value: después de tomar los paquetes ordenados a la corriente de corte de línea, el último valor
- FIRST_VALUE obtener la fila actual en el futuro grupo del primer valor
- LAST_VALUE obtener el último valor en el grupo por delante de la fila actual
- FIRST_VALUE (DESC) para obtener el valor final dentro de un grupo global de
la SELECT
DP_ID,
MT,
Pago,
FIRST_VALUE (de pago) sobre (partición por DP_ID Ordenar por MT) payment_g_first,
la LAST_VALUE (de pago) sobre (partición por DP_ID Ordenar por MT) payment_g_last,
FIRST_VALUE (de pago) sobre (partición por DP_ID Ordenar por desc MT) payment_g_last_global
de test2
la orden por DP_ID, mt;