On 2023-08-21 09:07:00 +0200, Anthony Apollis wrote: > Please review my code and make recommendations where needed. I have this code: > ``` [complicated code snipped] > > > I have re-written this code to make it less complex, still doing what > it is supposed to do. I want you to review my re-written code(code > must give me report up until yesterday): > ``` > WITH MaxDateCTE AS ( > SELECT > COALESCE(MAX(DISTINCT "CALDAY"), '2021-07-01') AS MaxDate > FROM > "system"."IMETA_ZTRNSPCST$F_Shipment_Cost_TA_BW" > ) > > SELECT > CASE > WHEN EXTRACT(DAY FROM (MaxDate + INTERVAL '1 day')::timestamp - (NOW() - INTERVAL '1 day')::timestamp) <= 30 THEN 1 > ELSE CEIL(EXTRACT(DAY FROM (MaxDate + INTERVAL '1 day')::timestamp - (NOW() - INTERVAL '1 day')::timestamp) / 30) > END AS "Number of days" > FROM > MaxDateCTE; So the intent is to compute how many "months" the maximum CALDAY is in the future, with some minor twists: * A "month" is always 30 days, not a calendar month. * The difference is between the day after the given date and yesterday - so it's shifted by one day (today + 30 days already counts as 2 months) * the minimum is 1. ? Then this can be simplified further: * MAX(DISTINCT "CALDAY") can be simplified to just MAX("CALDAY"). * The CASE can be eliminated and replaced by GREATEST(CEIL(EXTRACT(DAY FROM (MaxDate + INTERVAL '1 day')::timestamp - (NOW() - INTERVAL '1 day')::timestamp) / 30), 1) hp -- _ | Peter J. Holzer | Story must make more sense than reality. |_|_) | | | | | hjp@xxxxxx | -- Charles Stross, "Creative writing __/ | http://www.hjp.at/ | challenge!"
Attachment:
signature.asc
Description: PGP signature