sql新手,在查找查询示例时遇到困难。
所以,我有一张桌子:
bought ( customer_name, month, year, quantity, product_name )我想找出哪种产品在某一个月卖得最好。2014年4月
让我们说:
| Jan | April | 2014 | 7 | Watches |
| Ron | April | 2014 | 4 | Rings |
| Jan | April | 2014 | 4 | Rings |现在我有:
SELECT product_name
FROM bought
WHERE month_bought = 'April' AND year_bought = 2014 AND
quantity_buy >= all (SELECT quantity_buy
FROM bought
WHERE month_bought = 'April' AND year_bought = 2014
);我不确定是否/在哪里为product_name使用GROUP BY。
发布于 2017-04-26 06:01:57
您需要聚合,因为多个客户可以购买相同的产品。这反过来建议使用HAVING而不是WHERE
SELECT product_name
FROM bought b
WHERE month_bought = 'April' AND year_bought = 2014
GROUP BY product_name
HAVING SUM(quantity_buy) >= all (SELECT SUM(b2.quantity_buy)
FROM bought b2
WHERE b2.month_bought = b.month_bought AND
b2.year_bought = b.year_bought
GROUP BY product_name
);还有其他方式来表达这个查询。这似乎最接近你想要写的东西。
发布于 2017-04-26 06:03:03
在没有进一步测试的情况下,应该是这样的:
SELECT product_name
FROM bought
WHERE month_bought = 'April' AND year_bought = 2014 AND
sum(quantity_buy) = (SELECT max(sum(quantity_buy)) FROM bought
WHERE month_bought = 'April' AND year_bought = 2014 group by product_name)
group by product_name;如果销售数量相同,这将返回多个产品。
https://stackoverflow.com/questions/43621645
复制相似问题