Advertisement
Artoym

Untitled

Jan 15th, 2019
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION tmp_table_to_file(text) RETURNS void AS
  2. $delimeter$
  3. DECLARE      
  4.     curtime timestamp := now();
  5. BEGIN
  6.     EXECUTE format ('COPY (
  7.     select                                                                                
  8.         distinct(b.worker_role_callsign) as Driver_Callsign
  9.         ,a.lastname||'' ''||a.firstname||'' ''||a.MiddleName as FIO
  10.         ,array_agg(c.contact_value) as Phones    
  11.         ,a.Order_count
  12.         ,a.bonusSum                                                                      
  13.         ,a.commissionSum
  14.         ,a.distanceSum                                                            
  15.         ,a.idleBeforeSeatSum                                                        
  16.         ,a.awaitSum                                                                
  17.     from
  18.         tmp_driver_stat a,
  19.         core.worker_role b,
  20.         core.contact c,
  21.         core.worker_contact wc            
  22.     where
  23.         b.worker_role_worker_id = a.Driver_id                                      
  24.         and wc.worker_contact_worker_id=b.worker_role_worker_id                      
  25.         and wc.worker_contact_contact_id=c.contact_id
  26.     group by
  27.         b.worker_role_callsign
  28.         ,a.lastname
  29.         ,a.firstname
  30.         ,a.MiddleName
  31. --      ,c.contact_value
  32.         ,a.Order_count
  33.         ,a.bonusSum
  34.         ,a.commissionSum
  35.         ,a.distanceSum
  36.         ,a.idleBeforeSeatSum
  37.         ,a.awaitSum
  38.     order by 1
  39.     ) TO %L (FORMAT CSV, HEADER, DELIMITER '';'' )', $1);
  40. END;                                                            
  41. $delimeter$                              
  42. LANGUAGE plpgsql;
  43. DO $$                                                            
  44. DECLARE    
  45. dep_id bigint;
  46. dep_name text;            
  47. BEGIN
  48. FOR dep_id IN select department_id from core.department where department_type_id=3 order by department_id LOOP
  49. drop table if exists tmp_driver_stat;              
  50. RAISE NOTICE 'generate %', dep_id;                        
  51. create table tmp_driver_stat AS
  52. select        
  53. (json_array_elements(report_json_driver_orders)->>'driverId')::bigint AS Driver_id
  54. ,json_array_elements(report_json_driver_orders)->>'lastName' AS LastName
  55. ,json_array_elements(report_json_driver_orders)->>'firstName' AS FirstName
  56. ,json_array_elements(report_json_driver_orders)->>'middleName' AS MiddleName
  57. ,json_array_elements(report_json_driver_orders)->>'orderCnt' AS Order_count
  58. ,json_array_elements(report_json_driver_orders)->>'bonusSum' AS BonusSum
  59. ,json_array_elements(report_json_driver_orders)->>'commissionSum' AS CommissionSum
  60. ,json_array_elements(report_json_driver_orders)->>'distanceSum' AS DistanceSum
  61. ,json_array_elements(report_json_driver_orders)->>'idleBeforeSeatSum' AS idleBeforeSeatSum                                        
  62. ,json_array_elements(report_json_driver_orders)->>'awaitSum' AS awaitSum
  63. from interface.report_json_driver_orders(
  64. report_json_driver_orders_department_id_ := dep_id ::bigint
  65. ,report_json_driver_orders_timezone_:='+03:00'::character varying
  66. ,report_json_driver_orders_dt_type_:=1::smallint
  67. ,report_json_driver_orders_begin_dt_:='2018-12-01 05:00:00'::timestamp without time zone
  68. ,report_json_driver_orders_end_dt_:='2019-01-01 00:00:00'::timestamp without time zone
  69. -- Тип заказов 5- успешные, 6 - не успешные, null - все
  70. ,report_json_driver_orders_order_state_id_:='5'::smallint
  71. ,report_json_driver_orders_order_source_id_:= array[1,3,2,5,6]::bigint[]
  72. );
  73.  
  74. RAISE NOTICE 'copy %', dep_id;
  75. select department_name into dep_name from core.department where department_id=dep_id;
  76. dep_name:=dep_name ||'_'||dep_id;
  77. PERFORM tmp_table_to_file('/tmp/report/UE_8765_'|| dep_name ||'.csv');
  78. RAISE NOTICE 'done %', dep_id;
  79. END LOOP;
  80.  
  81. END $$;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement