【问题标题】:adding the sum of a group SQL添加一个组 SQL 的总和
【发布时间】:2017-04-25 21:56:07
【问题描述】:

刚接触 sql 并且无法找到查询示例。

所以,我有一张桌子:

bought ( customer_name, month, year, quantity, product_name )

我想找到在特定月份 EX 中销量最高的产品。 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
                               );

我不确定是否/在哪里使用 GROUP BY 作为 product_name。

【问题讨论】:

标签: mysql sql


【解决方案1】:

您需要聚合,因为多个客户可以购买相同的产品。这反过来建议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
                               );

还有其他方式来表达这个查询。这似乎最接近您要编写的内容。

【讨论】:

  • 第 4 行的 group by 出现语法错误。
【解决方案2】:

无需进一步测试,它应该是这样的:

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;

如果它们以相同数量出售,这将返回多个产品。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多