How do you get access to the pseudonym column?


  • QA Engineer

    SELECT `A`.*,
           SUM(o.quantity) AS `orders`,
           SUM((CASE
                    WHEN o.date >= ADDDATE(CURRENT_DATE(), -30 +1) THEN o.quantity
                    ELSE 0
                END)) AS `orders_period`,
           SUM(s.quantity) AS `sales`,
           SUM((CASE
                    WHEN s.date >= ADDDATE(CURRENT_DATE(), -30 +1) THEN s.quantity
                    ELSE 0
                END)) AS `sales_period`,
           ROUND(`sales` / `orders` * 100) AS `buyout`
           
    FROM `data_goods` AS A
    LEFT JOIN `data_orders` AS o ON o.wb_code = A.wb_code AND o.user = A.user AND o.key = A.key
    LEFT JOIN `data_sales` AS s ON s.wb_code = A.wb_code AND s.user = A.user AND s.key = A.key AND s.sale_id LIKE 'S%'
    WHERE A.`user` = '0'
    

    On the ROUND linesales / orders * 100) AS buyoutThere's no sales and orders. Although they are in the form of alias above (AS) ordersAS sales) How do you get access to these columns so you can take a ready value and re-use SUM()?



  • Unfortunately, sql can't turn to the listed column on his alias. There are three options:

    1. Reuse of SUM
    2. CTE (WITH), but as far as I know mysql does not support CTE.
    3. Implement the request, for example:
        select prep.*,
           ROUND(`prep.sales` / `prep.orders` * 100) AS `buyout`  FROM   
    (SELECT `A`.*,
           SUM(o.quantity) AS `orders`,
           SUM((CASE
                    WHEN o.date >= ADDDATE(CURRENT_DATE(), -30 +1) THEN o.quantity
                    ELSE 0
                END)) AS `orders_period`,
           SUM(s.quantity) AS `sales`,
           SUM((CASE
                    WHEN s.date >= ADDDATE(CURRENT_DATE(), -30 +1) THEN s.quantity
                    ELSE 0
                END)) AS `sales_period`
           FROM `data_goods` AS A
    LEFT JOIN `data_orders` AS o ON o.wb_code = A.wb_code AND o.user = A.user AND o.key = A.key
    LEFT JOIN `data_sales` AS s ON s.wb_code = A.wb_code AND s.user = A.user AND s.key = A.key AND s.sale_id LIKE 'S%'
    WHERE A.`user` = '0') prep
    


Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2