我有以下数据:
per_id month_id area_grp area_hrs level
754 201803 WNY 19.93 OVue
754 201802 MT 0.52 OVue
754 201802 WBS 0.34 OVue
754 201801 WYW 33.04 OVue
754 201801 VC 16.62 OVue
754 201801 PX 3.05 OVue
754 201712 RZN 5.05 OVue
754 201711 WYW 17.85 OVue
754 201711 NLN 0.8 OVue
754 201711 DJr 45.67 OVue
754 201711 TC 11.81 OVue
754 201710 MBN 1.61 OVue
754 201709 WAD 4.72 OVue
754 201709 DJr 23.82 OVue
**147 201803 WBC 13.44 OVue
147 201803 WBS 4.17 OVue
147 201803 WYW 1.80 OVue
147 201802 VD 5.14 OVue
147 201802 LNY 0.05 OVue
147 201801 LEIF 6.94 OVue
147 201801 WBC 25.35 OVue
147 201801 VD 8.53 OVue**
147 201712 MVR 7.17 OSver
147 201711 WDA 9.89 OSver
147 201711 YS 1.65 OSver
147 201711 N1T 3.02 OSver
147 201710 LEIF 1.83 OSver
147 201710 Hi 3.15 OVue
147 201710 TLD 1.43 OVue
147 201710 WBC 21.56 OSver
147 201710 NTT 2.88 OSver
147 201710 WBS 5.64 OSver
147 201710 LNY 2.67 OSver
147 201710 BRV 2.91 OSver
147 201710 N1T 3.78 OSver
以上是我的数据样本,按第一列和第二列排序。这些数据位于postgresql中的一个表中,我基于参数级别构造了一个查询
level_list = ['OSver','Ovue']
for i in range(0,len(level_list)):
sql_per_hours = str("""select * from table_name where level = %s ;""") \
%("'"+''.join(level_list[i]) + "'")
df_net = pd.read_sql(sql_per_hours,cnxn)
现在,对于per_id 754,因为他在一个级别下工作,所以应该获取他所有的记录。但对于在1个以上级别工作的人来说。 只能获取最新级别的信息。因此,对于per_id 147,只有前8条记录必须被选中才能获取。latest level是每个per_id的级别中的值,其中month_id为最大值。因此,从该行开始,直到该值出现中断,都会取行
如何构造此sql查询并从python调用它?这也将有助于减少我为level_列表中的每个级别提取的数据
以df_净值表示的预期输出:
per_id month_id area_grp area_hrs level
754 201803 WNY 19.93 OVue
754 201802 MT 0.52 OVue
754 201802 WBS 0.34 OVue
754 201801 WYW 33.04 OVue
754 201801 VC 16.62 OVue
754 201801 PX 3.05 OVue
754 201712 RZN 5.05 OVue
754 201711 WYW 17.85 OVue
754 201711 NLN 0.8 OVue
754 201711 DJr 45.67 OVue
754 201711 TC 11.81 OVue
754 201710 MBN 1.61 OVue
754 201709 WAD 4.72 OVue
754 201709 DJr 23.82 OVue
147 201803 WBC 13.44 OVue
147 201803 WBS 4.17 OVue
147 201803 WYW 1.80 OVue
147 201802 VD 5.14 OVue
147 201802 LNY 0.05 OVue
147 201801 LEIF 6.94 OVue
147 201801 WBC 25.35 OVue
147 201801 VD 8.53 OVue
有人能帮我吗
这与SQL的关系比与python的关系更大。首先获取每个
per_id
对应的最后一级,并使用该信息获取所需的行您还可以使用窗口函数进行探索
相关问题 更多 >
编程相关推荐