ariful_346

Func

Mar 1st, 2021
411
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. def func2(params):
  2.     main_sql = """
  3.            select
  4.                distinct cd.client_id as client_id
  5.            from
  6.                (
  7.                select
  8.                    cd.client_id ,
  9.                    data_point_id ,
  10.                    max(cd.id) max_client_data_id
  11.                from
  12.                    client_data cd
  13.                group by
  14.                    cd.client_id ,
  15.                    data_point_id) as mcd
  16.            inner join client_data cd on
  17.                cd.id = mcd.max_client_data_id
  18.            inner join data_point dp on
  19.                dp.id = cd.data_point_id
  20.          """
  21.     where_sql = """where
  22.                dp."name" in ('business_upazilla', 'business_district', 'business_division')
  23.        """
  24.  
  25.     if params['division']:
  26.         main_sql += """inner join division dv on
  27.             dv.id =
  28.             (case
  29.                 when regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g')= '' then null
  30.                 else left(regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g'), 18)
  31.             end)::bigint
  32.             and dp."type" = 'DIVISION'
  33.            """
  34.         where_sql += " and dv.id = %s" % params['division']
  35.  
  36.     if params['district']:
  37.         main_sql += """inner join district ds on
  38.            ds.id =
  39.            (case
  40.                when regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g')= '' then null
  41.                else left(regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g'), 18)
  42.            end)::bigint
  43.            and dp."type" = 'DISTRICT'
  44.            """
  45.         where_sql += " and ds.id = %s" % params['district']
  46.  
  47.     if params['upazilla']:
  48.         main_sql += """inner join upazilla u on
  49.                u.id =
  50.                (case
  51.                    when regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g')= '' then null
  52.                    else left(regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g'), 18)
  53.                end)::bigint
  54.                and dp."type" = 'UPAZILLA'
  55.            """
  56.         where_sql += " and u.id = %s" % params['upazilla']
  57.  
  58.     sql = main_sql + where_sql
  59.  
  60.     return sql
  61.  
  62.  
  63. def func1(params):
  64.     client_sql = func2(params)
  65.     sql = """
  66.            select
  67.                *
  68.            from
  69.                client_data cd
  70.            inner join data_point dp on
  71.                cd.data_point_id = dp.id
  72.            inner join client c on
  73.                c.id = cd.client_id
  74.            inner join (
  75.                select
  76.                    cd.client_id ,
  77.                    cd.data_point_id,
  78.                    max(cd.id) as max_client_data_id
  79.                from
  80.                    client_data cd
  81.                inner join (%s) as sc on
  82.                    cd.client_id = sc.client_id
  83.                group by
  84.                    cd.client_id ,
  85.                    cd.data_point_id ) as ld on
  86.                cd.id = ld.max_client_data_id
  87.            left join upazilla u on
  88.                u.id =
  89.                (case
  90.                    when regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g')= '' then null
  91.                    else left(regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g'), 18)
  92.                end)::bigint
  93.                and dp."type" = 'UPAZILLA'
  94.            left join district ds on
  95.                ds.id =
  96.                (case
  97.                    when regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g')= '' then null
  98.                    else left(regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g'), 18)
  99.                end)::bigint
  100.                and dp."type" = 'DISTRICT'
  101.            left join division dv on
  102.                dv.id =
  103.                (case
  104.                    when regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g')= '' then null
  105.                    else left(regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g'), 18)
  106.                end)::bigint
  107.                and dp."type" = 'DIVISION'
  108.            left join data_point_enum dpe on
  109.                dpe.id =
  110.                (case
  111.                    when regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g')= '' then null
  112.                    else left(regexp_replace(cd."data" ->> 'value', '[^0-9]+', '', 'g'), 18)
  113.                end)::bigint
  114.                and dp."type" = 'ENUM' ;
  115.            """ % client_sql
  116.  
  117.     return sql
  118.  
  119.  
  120. params = {
  121.     'division': 4,
  122.     'district': 5,
  123.     'upazilla': None
  124. }
  125.  
  126. x = func1(params)
  127. y = 10
  128.  
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×