繁体   English   中英

如何在 MySQL 中按日期分组时计算价格平均值?

[英]How to calculate price average while grouping by date in MySQL?

在 MySQL 5.7 中,我需要计算每个商家和每天的平均折扣。

有2张桌子:

产品制造商:

PROD_ID | MANUFACTURER_ID | PRICE_RECOM
1         1                 10
2         1                 20

商家价格

PROD_ID | MERCHANT_ID | PRICE_ACTUAL | DATE
1        10            9.00           21-01-20
1        11            8.80           21-01-20
1        11            9.00           22-01-19

我的目标是一个图表,它group by DATE, merchant_id中获取其度量值

现在如何在不按 PROD_ID 分组的情况下计算特定商家的制造商的所有产品的平均折扣?

   SELECT
        date,
        merchant_id,
        1- (t.PRICE_ACTUAL / p.PRICE_RECOM)*100 AS discount2
        -- (1 - ROUND(AVG(PRICE_ACTUAL),2) / p.PRICE_RECOM)*100 AS discount
    FROM
        merchants_prices t
        INNER JOIN produts_manufacturers p ON t.PROD_ID = p.PROD_ID
    WHERE
          p.MANUFACTURER_ID = 1
        AND PRICE_ACTUAL IS NOT NULL
    GROUP by
        date,
        MERCHANT_ID
    ORDER BY
       date desc,  merchant_id

要计算每个商家和天的平均折扣:

SELECT `DATE`, MERCHANT_ID, ROUND(AVG(discount), 2) as discount
FROM (
  SELECT mp.`DATE`, mp.MERCHANT_ID, 1- (mp.PRICE_ACTUAL / pm.PRICE_RECOM)*100 AS discount
  FROM produts_manufacturers pm
  JOIN merchants_prices mp ON mp.PROD_ID = pm.PROD_ID
  -- WHERE pm.MANUFACTURER_ID = 1 -- If you want to restrict to a specific manufacturer
) as x
GROUP BY `DATE`, MERCHANT_ID;

使用您的数据集->

DATE           MERCHANT_ID  discount
2021-01-20     10           -89
2021-01-20     11           -87
2022-01-19     11           -89

为了帮助你,我在这里做了一个小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM