当前位置: 首页 > 面试题库 >

MySQL:按两列分组并求和

屠钊
2023-03-14
问题内容

建立库存系统。我有很多产品,每个产品都有三个不同的变量。因此,对于总库存,我想按两列(产品和尺寸)和总数量分组以获得总库存。

---------------------------------
|product      |Size  |Quantity  |
---------------------------------
|Widget one   |2     |275       |
---------------------------------
|Widget one   |2     |100       |
---------------------------------
|Widget two   |3     |150       |
---------------------------------
|Widget two   |2     |150       |
---------------------------------

我想要输出的内容:
小部件一-2:375
小部件二-3:150
小部件二-2:150

我想出了如何使用以下代码将一列分组并求和:

$query = "SELECT product, SUM(Quantity) FROM inventory GROUP BY product";  
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
    echo "Total ". $row['product']. " = ". $row['SUM(Quantity)'];
    echo "<br />";
}
?>

我只是按两列分组。可能吗?还是应该仅针对这三种尺寸的商品创建三种不同的产品并删除该列?谢谢。


问题答案:

根据示例表,您似乎希望分组product而不是id。您只需要将Size列添加到SELECT列表和GROUP BY

$query = "SELECT 
            product,
            Size, 
            SUM(Quantity) AS TotalQuantity 
          FROM inventory
          GROUP BY product, Size";

请注意,我添加了一个列别名TotalQuantity,这将让您更轻松地通过更明智的检索所取得的行的列$row['TotalQuantity'],而不是$row['SUM(Quantity)']



 类似资料:
  • 我正在建立一个聊天网站,我有一个包含以下列的表,,,。 是聊天来源的用户的,而是聊天发送到的用户的。 现在我想获取所有聊天,但我也想分组,如果是我的id,它将按分组,如果是我的用户id,它将按分组,我尝试了这个分组,但它只是在和相同时才分组,我怎么也能让它反过来呢

  • 我有一个表abc,其中可以针对一个UserId有一个或多个行。abc表有列值。我希望结果是每个UserId值的总和。 示例:userid1- 我现在拥有的: 结果:它单独返回每行的总和。所以我有这样的: 用户标识1- 我应该更改或添加什么来完成查询? PS.我知道这是一个非常常见/简单的解决方案,但似乎找不到任何解决方案。:(

  • 我有一个熊猫数据框,格式如下: df: 现在我想将其分为两列,如下所示: 输出: 我想得到每一行的计数,如下所示。预期产出: 如何获得我的预期输出?我想找出每个“col2”值的最大计数?

  • 问题内容: 我有一个像下面的表格 我需要先获得特色产品,然后再选择优先级为p1,p2和p3的产品 我写了一个查询,在下面是行不通的。 你能在那发现错误吗 问题答案: 试试这个 如果您在mysql枚举上使用ORDER BY,则不会按字母顺序对其进行排序,而是会按其在枚举中的位置对其进行排序。 如果要按照描述的字母顺序排序,请将枚举名称转换为这样的字符串

  • 问题内容: 给出以下列表: 我想将它们按元组的第一,第二,第四和第五列进行分组,并对第三列求和。在此示例中,我将列命名为col1,col2,col3,col4,col5。 在SQL中,我将执行以下操作: 有没有一种“很酷”的方式来做到这一点,或者都是手动循环? 问题答案: (注意:重新格式化输出)

  • 问题内容: 我有一张税单: TaxLine类为 我想基于unique 和合并它们,然后添加预期: 问题答案: 主体与链接问题中的主体相同,只需要一个不同的下游收集器来求和: