Advertisement
Guest User

Untitled

a guest
Sep 24th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. DB::select($sql)
  2.  
  3. select pd_report_orders_sum_by_categories( p_category_list := ARRAY[102,17]::integer[], p_last_operation_date_from := '2012-09-20', p_last_operation_date_till := '2017-09-29', p_status := 'O', p_sort_categories := 'sum', p_limit := null )
  4.  
  5.  
  6. и функция определена как:
  7.  
  8. CREATE OR REPLACE FUNCTION public.pd_report_orders_sum_by_categories(p_category_list integer[], p_last_operation_date_from timestamp without time zone, p_last_operation_date_till timestamp without time zone, p_status type_order_status, p_sort_categories character varying DEFAULT 'by_sum_asc'::character varying, p_limit integer DEFAULT NULL::integer)
  9. RETURNS TABLE(category_name character varying, category_slug character varying, category_id smallint, sold_sum numeric, qty_sum bigint)
  10. LANGUAGE sql
  11. AS $function$
  12.  
  13. SELECT c.name as category_name,
  14.  
  15. c.slug as category_slug,
  16.  
  17. pc.category_id,
  18.  
  19. sum( oi.qty*oi.price ) AS sold_sum,
  20.  
  21. sum( oi.qty ) AS qty_sum
  22.  
  23. from pd_order_item as oi join
  24.  
  25. pd_product_category as pc on pc.product_id = oi.product_id join
  26.  
  27. pd_order as o on o.id = oi.order_id join
  28.  
  29. pd_category as c on c.id = pc.category_id
  30.  
  31. WHERE ( CASE when p_category_list IS NOT NULL THEN pc.category_id = ANY (p_category_list) else true END ) AND
  32.  
  33. ( o.last_operation_date BETWEEN coalesce(p_last_operation_date_from,pd_f_min_timestamp()) AND coalesce(p_last_operation_date_till,pd_f_max_timestamp()) ) AND
  34.  
  35. ( CASE when p_status IS NOT NULL THEN o.status = p_status else true END )
  36.  
  37. group by pc.category_id, category_name, category_slug
  38.  
  39. ORDER BY
  40.  
  41. CASE WHEN p_sort_categories = 'by_sum_asc' THEN
  42.  
  43. sum( oi.qty*oi.price )
  44.  
  45. end ASC,
  46.  
  47. CASE WHEN p_sort_categories = 'by_sum_desc' THEN
  48.  
  49. sum( oi.qty*oi.price )
  50.  
  51. end DESC,
  52.  
  53. CASE WHEN p_sort_categories = 'by_sum_category_name' THEN
  54.  
  55. c.name
  56.  
  57. end ASC
  58.  
  59. LIMIT p_limit ;
  60.  
  61. $function$
  62.  
  63. Array
  64. (
  65. [0] => stdClass Object
  66. (
  67. [pd_report_orders_sum_by_categories] => (Music,music,4,2.43,1)
  68. )
  69.  
  70. [1] => stdClass Object
  71. (
  72. [pd_report_orders_sum_by_categories] => ("Computer Accessories",computer-accessories,1,25.75,1)
  73. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement