gpt4 book ai didi

sql - 优化平均值 SQL 查询的平均值

转载 作者:行者123 更新时间:2023-12-02 19:54:59 29 4
gpt4 key购买 nike

我有一张 table ,其中每一行都是在某个日期进行销售的供应商。

我正在尝试计算 2019 年每个供应商的平均每日销售额,并得到一个数字。我认为这意味着我想计算平均值。

这是我正在考虑的查询,但是在这个大表上需要很长时间。没有这么多嵌套,有没有更聪明的方法来计算这个平均值?我有一种感觉,我扫描行的次数超出了我的需要。

-- Average of all vendor's average daily sale counts
SELECT AVG(vendor_avgs.avg_daily_sales) avg_of_avgs
FROM (
-- Get average number of daily sales for each vendor
SELECT vendor_daily_totals.memberdeviceid, AVG(vendor_daily_totals.cnt)
avg_daily_sales
FROM (
-- Get total number of sales for each vendor
SELECT vendorid, COUNT(*) cnt
FROM vendor_sales
WHERE year = 2019
GROUP BY vendorid, month, day
) vendor_daily_totals
GROUP BY vendor_daily_totals.vendorid
) vendor_avgs;

我很好奇是否有一种方法可以更有效地计算平均值。

顺便说一句,这是在 Impala 中运行的。

最佳答案

我认为您可以一次性完成计算:

SELECT AVG(t.avgs)
FROM (
SELECT vendorid,
COUNT(*) * 1.0 / COUNT(DISTINCT month, day) as avgs
FROM vendor_sales
WHERE year = 2019
GROUP BY vendorid
) t

这得到总数并除以天数。但是, COUNT(DISTINCT)可能比嵌套的 GROUP BY 还要慢s 在 Impala 中,因此您需要对此进行测试。

关于sql - 优化平均值 SQL 查询的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57916882/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com