Oracle, según agrupación de estadísticas de datos, total y ordenación

Los datos almacenados en la Tabla A son algunos datos de área y estos datos tienen diferentes tipos.

Los datos almacenados en la tabla B son el tipo de diccionario de los datos de la tabla A.

Requisito: Después de realizar estadísticas basadas en tipos, realice cálculos totales.

sql:

SELECT
  CASE WHEN GROUPING ( B.F_NAME ) = 1 THEN'合计' ELSE B.F_NAME END AS Name,
	B.f_code code,
	ROUND( SUM( A.AREA_SYQ ) / 100, 2 ) AREA 
	FROM
	( SELECT F_NAME, f_code FROM B WHERE F_YEAR = '2019' AND F_TYPE = '01' ) B
	JOIN A ON A.F_NAME = A.DL_NAME 
	GROUP BY rollup ((B.F_NAME,B.f_code )) 
ORDER BY
	B.f_code Nulls first //根据code进行排序,若遇到null值则放到第一位

resultado:

Funciones utilizadas:

GROUPING (): genera una columna adicional. Cuando se agrega una fila con el operador CUBE o ROLLUP, el valor de salida de la columna adicional es 1. Cuando CUBE o ROLLUP no generan la fila agregada, el valor de la columna adicional es 0. Es decir, si el parámetro en GROUPING no está en la base de datos, se devolverá un tipo int data 1;

ROUND (): es redondear los datos;

rollup (): Es una función extendida de agrupar por. La sensación inicial es que puede agrupar por múltiples columnas y luego realizar estadísticas por separado. Introducción específica: resumen de la cláusula acumulativa

Supongo que te gusta

Origin blog.csdn.net/qq_36802726/article/details/103784982
Recomendado
Clasificación