gpt4 book ai didi

MySQL - 如何总结许多不同产品的首次出现

转载 作者:行者123 更新时间:2023-11-29 06:34:29 27 4
gpt4 key购买 nike

我有一个大 View 叫做:how_many_per_month

name_of_product | how_many_bought | year | month
p1 20 2012 1
p2 7 2012 1
p1 10 2012 2
p2 5 2012 2
p1 3 2012 3
p2 20 2012 3
p3 66 2012 3

如何编写 MySQL 查询以便一次只获取产品 p1、p2、p3 的前几次出现?

要在前 3 个月逐一获取它,我可以这样写:

SELECT name_of_product , sum(how_many_bought) FROM 
(SELECT name_of_product, how_many_bought FROM `how_many_per_month`
WHERE name_of_product= 'p1' LIMIT 3) t

如何一次对所有可能的产品执行此操作,这样我只使用 第一个月 的结果如下:

p1 20
p2 7
p3 66

两个月:

p1 30
p2 12
p3 66

问题是有些产品是在不同的月份发布的,我必须统计第一个月、前 3 个月、6 个月、1 年的总销量除以总销量。

最佳答案

联合示例

select 
name_of_product,
sum(how_many_bought) as bought,
"first month" as period
from how_many_per_month
where month = 1
group by name_of_product

union

select
name_of_product,
sum(how_many_bought) as bought,
"first 2 month" as period
from how_many_per_month
where month <= 2
group by name_of_product

union

select
name_of_product,
sum(how_many_bought) as bought,
"first 6 month" as period
from how_many_per_month
where month <= 6
group by name_of_product

union

select
name_of_product,
sum(how_many_bought) as bought,
"first 12 month" as period
from how_many_per_month
where month <= 12
group by name_of_product

演示:http://www.sqlfiddle.com/#!2/788ea/11

结果与您的预期略有不同。你确定你写的正确吗?如果您需要在查询时间上获得更快的速度,您可以像我已经说过的那样使用 group by case。

关于MySQL - 如何总结许多不同产品的首次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25822635/

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