snowpark_df = snowpark_df.with_column( "AGE_BKT", F.when(F.col("AGE") < 21, "YOUNG").otherwise( F.when(F.col("AGE") < 49, "ADULT").otherwise("OLD ADULT") ), ) age_bkt_df = snowpark_df.select( F.col("AGE_BKT"), F.when((F.col("AGE_BKT")=='YOUNG') & (F.col("TARGET")==1),1).otherwise(0).as_("YOUNG_"), F.when((F.col("AGE_BKT")=='ADULT') & (F.col("TARGET")==1),1).otherwise(0).as_("ADULT_"), F.when((F.col("AGE_BKT")=='OLD ADULT') & (F.col("TARGET")==1),1).otherwise(0).as_("OLD_ADULT_") ) age_bkt_df.group_by(F.col("AGE_BKT")).count().show() # ----------------------- # |"AGE_BKT" |"COUNT" | # ----------------------- # |OLD ADULT |342413 | # |ADULT |628554 | # |YOUNG |77608 | # ----------------------- age_bkt_df.select( ((F.sum("YOUNG_") * 100 ) / F.count("YOUNG_")).as_("YOUNG % OF CASES"), ((F.sum("ADULT_") * 100) / F.count("ADULT_")).as_("ADULT % OF CASES"), ((F.sum("OLD_ADULT_") * 100) / F.count("OLD_ADULT_")).as_("OLD_ADULT % OF CASES") ).show() # -------------------------------------------------------------------- # |"YOUNG % OF CASES" |"ADULT % OF CASES" |"OLD_ADULT % OF CASES" | # -------------------------------------------------------------------- # |1.534463 |20.877858 |14.969745 | # --------------------------------------------------------------------