Created
March 15, 2018 12:46
-
-
Save digitalashes/0a98e13a5768a00ecdb5219dfa9676e8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE OR REPLACE FUNCTION calculateStoreSalesCycle(_store_id INTEGER) | |
RETURNS DECIMAL AS $$ | |
DECLARE | |
dates TIMESTAMP WITH TIME ZONE ARRAY; | |
timedeltas DECIMAL ARRAY; | |
BEGIN | |
SELECT ARRAY(SELECT platform_created_at | |
INTO dates | |
FROM stores_order | |
WHERE stores_order.store_id = _store_id | |
GROUP BY platform_created_at | |
ORDER BY platform_created_at ASC); | |
FOR i IN 1..array_length(dates, 1) LOOP | |
SELECT array_append(timedeltas, (EXTRACT(EPOCH FROM dates [i + 1] - dates [i]) / 60 / 60 / 24) :: DECIMAL) | |
INTO timedeltas; | |
IF i = array_length(dates, 1) - 1 | |
THEN EXIT; | |
END IF; | |
END LOOP; | |
RETURN ( | |
SELECT avg(items) | |
FROM unnest(timedeltas :: DECIMAL []) items | |
); | |
END; | |
$$ | |
LANGUAGE plpgsql; | |
SELECT | |
round((SUM("stores_order"."total_price") / COUNT("stores_order"."id")), 2) AS "store_aov", | |
calculateStoreSalesCycle(%s) AS "store_cc" | |
FROM "stores_order" | |
WHERE "stores_order"."store_id" = %s; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment