【问题标题】:SELECT rows having equal column(c1) value and adding adding another column(c2) value. Performing same for all the distinct column values for column c1选择具有相同列(c1)值并添加另一个列(c2)值的行。对列 c1 的所有不同列值执行相同的操作
【发布时间】:2014-07-03 15:54:50
【问题描述】:

我需要为 MySQL 数据库编写一个 SQL 查询,根据必要的条件为我提供数据

我有一个这样结构的表

id: orderId
amount : itemAmount
rate : itemRate
time : orderTime

现在我必须选择所有具有相同费率的行,然后必须添加所有具有相同费率的项目。这应该适用于每个速率手段,例如。

id 为 1 的行的价格为 20 美元,包含 2 件商品,第 3 行的价格为 20 美元,包含 5 件商品

id 为 2 的行的价格为 40 美元,包含 4 件商品,第 4 行的价格为 40 美元,包含 7 件商品

我应该得到的结果是

rate: $20 totalItem : 7
rate: $40 totalItem : 11

【问题讨论】:

  • 你的表结构一点都不清楚。这些列是称为idamountratetime,还是orderIditemAmountitemRateorderTime?冒号另一边的名字是什么意思?
  • 你尝试了什么?你看过 SUM() 和 GROUP BY 吗?

标签: mysql sql


【解决方案1】:

正如我在评论中所说,我不知道你的专栏叫什么,我会在我的回答中假设它们被称为 idamountratetime

SELECT rate, COUNT(*) AS totalItems -- Select the rate, and count everything
FROM theRelevantTable               -- Use the rows in this table
GROUP BY rate                       -- But do the selection per group.

用更清晰的英语:

将相关表中的行按rate 分组,然后,对于每个组,给我比率并计算组中的行数。

我希望这就是你的意思。我不完全理解你的问题。

【讨论】:

    【解决方案2】:

    也许是这个? SQL FIDDLE 一起玩

    假设:您有一个名为 orders 的表,其中包含 rate、amount、time、id 列。

    amount 存储一定数量的项目,rate 是它们的价格,time 是它发生的时间。

    SELECT 
        rate, 
        SUM(amount) 
    FROM orders
    GROUP BY rate
    

    【讨论】:

    • 啊,我想我误解了这个问题,这就是 OP 想要的。我必须说,这个问题很难阅读。
    • @11684 我完全同意......就像他已经在数据库中存储了一个计数,这就是我使用这种方法的原因:) +1 尝试:)
    猜你喜欢
    • 1970-01-01
    • 2017-02-14
    • 2012-05-25
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    相关资源
    最近更新 更多