【问题标题】:SQL group column where other column is equal其他列相等的 SQL 组列
【发布时间】:2019-10-21 17:26:49
【问题描述】:

我正在尝试从数据库中选择一些信息。 我得到一个包含如下列的数据库:

标识、名称、长度、宽度、数量、计划

表格数据如下

+-----------+-----------+---------+---------+------------+---------+
|   Ident   |   Name    | Length  | Width   | Quantity   | Planned |
+-----------+-----------+---------+---------+------------+---------+
|   12345   | Name1     | 1500    |    1000 |         20 |       5 |
|  23456    | Name1     | 1500    |    1000 |         30 |      13 |
|  34567    | Name1     | 2500    |    1000 |         10 |       2 |
|  45678    | Name1     | 2500    |    1000 |         10 |       4 |
|  56789    | Name1     | 1500    |    1200 |         20 |       3 |
+-----------+-----------+---------+---------+------------+---------+

我想要的结果是对“名称、长度和宽度”相等的行进行分组,对“数量”求和,然后将其减去“计划”的总和 例如:

- Name1,1500,1000,32 --- (32 because (20+30)-(5+13))
- Name1,2500,1000,14 --- (14 because (10+10)-(2+4)))
- Name1,1500,1200,17

现在我遇到了如何分组或加入这些信息以获得所需选择的问题。可能是你们中的一些人可以帮助我。如果需要更多信息,请在评论中写下。

【问题讨论】:

  • 如果我没记错的话,最后一个结果集应该是Name1,1500,1200,17
  • 你完全正确!!! .. 修复.. 谢谢
  • (20+30)-(5+13)32,而不是 37

标签: sql join group-by


【解决方案1】:

您可以通过将表格分组并减去QuantityPlanned 的总和来实现。

select
     Name
    ,Length
    ,Width
    ,sum(Quantity) - sum(Planned)
from yourTable
group by Name,Length,Width

【讨论】:

    【解决方案2】:
    select 
    
    A1.Name,A1.Length,A1.Width,((A1.Quantity + A2.Quantity) -(A1.Planned+A2.Planned))
    
    from `Table` AS A1, `Table` AS A2
    
    where A1.Name = A2.Name and A1.Length = A2.Length and A1.Width = A2.Width
    
    group by (whatever)
    

    所以您是在比较同一张表中的这些列?

    【讨论】:

    • 分组是什么意思(随便)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多