在创建视图中优化基于RANK的查询

问题描述

我有一个观点,我使用了2个select案例来使用RANK功能。 有没有一种方法可以对此进行优化,避免使用2个select子句并将其设为一个

查询如下:

my_dictio = 
{'url': 'www.google.com','value': 
[{'Car': 'Mercedes','Engine': 'Hybrid','Entity1': {'Country': 'US','Name': 'Richard','Entity2': {'Name': 'type1','Payment': 'cash'}}},{'Car': 'Audi','Entity1': {'Country': 'DE','Name': 'Mesut','Entity2': {'Name': 'type2',{'Car': 'Volkswagen','Engine': 'Gas','Entity1': {'Country': 'FR','Name': 'Paul','Entity2': {'Name': 'type3','Payment': 'card'}}}]}

for i,dictionary in enumerate(my_dictionary['value']):
    my_dictionary['Origin'][i]['model'] = dictionary.pop('Name')
    
print(my_dictionary)

谢谢, Chithra

解决方法

您可以将SELECT列表的两个块组合为

CREATE OR REPLACE VIEW TEMP AS
SELECT po.local_policy_id AS "P_LOCAL_POLICY_ID",po.girda_policy_id AS "P_GIRDA_POLICY_ID",MAX(cl.oe_cons_unit_title) AS "C_OE_CONS_UNIT_TITLE",SUM(cl.row_number) AS "C_ROW_NUMBER",MAX(cl.load_timestamp) AS "C_LOAD_TIMESTAMP",error.error_text AS "ERROR_TEXT",error.record_2_delete AS "RECORD_2_DELETE",error.load_timestamp AS "ERROR_TIMESTAMP",RANK() OVER( PARTITION BY err_error_text ORDER BY 1 ) AS "RANK_NUMBER"
  FROM <condition>
 WHERE <condition>
 GROUP BY po.local_policy_id,po.local_region,error.error_text,error.record_2_delete,error.load_timestamp
  • 无需在视图名称后列出这些列别名。
  • 下划线字符可能会在列名称中删除,例如 "P LOCAL POLICY ID",而不是"P_LOCAL_POLICY_ID" 被引用