从 table 获取最小值和最大值的 TeraData 查询
TeraData Query to get min and max from a table
我有一个名为 HMS_PGHL8_HQID_MAP_DEMO
的 table 和名为 UDMTOOL_STG
的数据库。
下面的查询获取了我需要的值。
SELECT udm_main.RECORD_ID AS record_id ,udm_main.HMS_PGH_NODE_ID AS hms_pgh_node_id,
udm_main.HMS_PGH_NODE_NAME AS hms_pgh_node_name ,udm_main.HQ_NODE_ID AS hq_node_id, udm_main.HQ_NODE_NAME AS hq_node_name,
udm_main.NODE_TYPE_IND as node_type_ind,UPDATED_ON,UPDATED_BY,
INSERT_TS FROM UDMTOOL_STG.HMS_PGHL8_HQID_MAP_DEMO udm_main
WHERE op_code <> 'D' OR op_code IS NULL
ORDER BY RECORD_ID,HMS_PGH_NODE_ID,HQ_NODE_ID
GROUP BY 1,2,3,4,5,6,7,8,9;
现在我需要获取总行值:
- 记录 ID 最小
- 记录 ID 为最大值
请注意以下内容无效,
SELECT MIN(udm_main.RECORD_ID AS) record_id ,udm_main.HMS_PGH_NODE_ID AS hms_pgh_node_id,
udm_main.HMS_PGH_NODE_NAME AS hms_pgh_node_name ,udm_main.HQ_NODE_ID AS hq_node_id, udm_main.HQ_NODE_NAME AS hq_node_name,
udm_main.NODE_TYPE_IND as node_type_ind,UPDATED_ON,UPDATED_BY,
INSERT_TS FROM UDMTOOL_STG.HMS_PGHL8_HQID_MAP_DEMO udm_main
WHERE op_code <> 'D' OR op_code IS NULL
ORDER BY RECORD_ID,HMS_PGH_NODE_ID,HQ_NODE_ID
GROUP BY 1,2,3,4,5,6,7,8,9;
请求您帮助解决问题。
您可以使用 QUALIFY
过滤 MIN/MAX:
SELECT udm_main.RECORD_ID,udm_main.HMS_PGH_NODE_ID AS hms_pgh_node_id,
udm_main.HMS_PGH_NODE_NAME AS hms_pgh_node_name,udm_main.HQ_NODE_ID AS hq_node_id, udm_main.HQ_NODE_NAME AS hq_node_name,
udm_main.NODE_TYPE_IND as node_type_ind,UPDATED_ON,UPDATED_BY,
INSERT_TS
FROM UDMTOOL_STG.HMS_PGHL8_HQID_MAP_DEMO udm_main
WHERE op_code <> 'D' OR op_code IS NULL
GROUP BY 1,2,3,4,5,6,7,8,9
QUALIFY udm_main.RECORD_ID = MIN(udm_main.RECORD_ID) OVER ()
OR udm_main.RECORD_ID = MAX(udm_main.RECORD_ID) OVER ()
ORDER BY RECORD_ID
;
我有一个名为 HMS_PGHL8_HQID_MAP_DEMO
的 table 和名为 UDMTOOL_STG
的数据库。
下面的查询获取了我需要的值。
SELECT udm_main.RECORD_ID AS record_id ,udm_main.HMS_PGH_NODE_ID AS hms_pgh_node_id,
udm_main.HMS_PGH_NODE_NAME AS hms_pgh_node_name ,udm_main.HQ_NODE_ID AS hq_node_id, udm_main.HQ_NODE_NAME AS hq_node_name,
udm_main.NODE_TYPE_IND as node_type_ind,UPDATED_ON,UPDATED_BY,
INSERT_TS FROM UDMTOOL_STG.HMS_PGHL8_HQID_MAP_DEMO udm_main
WHERE op_code <> 'D' OR op_code IS NULL
ORDER BY RECORD_ID,HMS_PGH_NODE_ID,HQ_NODE_ID
GROUP BY 1,2,3,4,5,6,7,8,9;
现在我需要获取总行值:
- 记录 ID 最小
- 记录 ID 为最大值
请注意以下内容无效,
SELECT MIN(udm_main.RECORD_ID AS) record_id ,udm_main.HMS_PGH_NODE_ID AS hms_pgh_node_id,
udm_main.HMS_PGH_NODE_NAME AS hms_pgh_node_name ,udm_main.HQ_NODE_ID AS hq_node_id, udm_main.HQ_NODE_NAME AS hq_node_name,
udm_main.NODE_TYPE_IND as node_type_ind,UPDATED_ON,UPDATED_BY,
INSERT_TS FROM UDMTOOL_STG.HMS_PGHL8_HQID_MAP_DEMO udm_main
WHERE op_code <> 'D' OR op_code IS NULL
ORDER BY RECORD_ID,HMS_PGH_NODE_ID,HQ_NODE_ID
GROUP BY 1,2,3,4,5,6,7,8,9;
请求您帮助解决问题。
您可以使用 QUALIFY
过滤 MIN/MAX:
SELECT udm_main.RECORD_ID,udm_main.HMS_PGH_NODE_ID AS hms_pgh_node_id,
udm_main.HMS_PGH_NODE_NAME AS hms_pgh_node_name,udm_main.HQ_NODE_ID AS hq_node_id, udm_main.HQ_NODE_NAME AS hq_node_name,
udm_main.NODE_TYPE_IND as node_type_ind,UPDATED_ON,UPDATED_BY,
INSERT_TS
FROM UDMTOOL_STG.HMS_PGHL8_HQID_MAP_DEMO udm_main
WHERE op_code <> 'D' OR op_code IS NULL
GROUP BY 1,2,3,4,5,6,7,8,9
QUALIFY udm_main.RECORD_ID = MIN(udm_main.RECORD_ID) OVER ()
OR udm_main.RECORD_ID = MAX(udm_main.RECORD_ID) OVER ()
ORDER BY RECORD_ID
;