【问题标题】:How to select data where sum is greater than x如何选择总和大于 x 的数据
【发布时间】:2012-02-02 10:55:56
【问题描述】:

我对 SQL 非常陌生,并且正在使用 SQLite 3 对销售数据进行购物篮分析。

相关列是产品 ID、唯一交易 ID(标识购物篮)和产品数量。如果客户购买了多个产品类型,则重复唯一的交易 ID。

我只想选择客户购买了超过 1 件商品的购物篮。

SQLite 有什么方法可以选择唯一交易 ID 和数量之和,但仅适用于数量大于一的唯一交易 ID?

到目前为止我已经尝试过:

select uniqID, sum(qty) from salesdata where sum(qty) > 1 group by uniqID;

但是 SQLite 给了我错误 'misuse of aggregate: sum()'

对不起,如果这是一个简单的问题,但我很难通过谷歌搜索找到任何相关信息!

【问题讨论】:

  • 请发布您的表结构 (.schema)。

标签: sqlite sum where


【解决方案1】:

试试

select uniqID, sum(qty) from salesdata group by uniqID having sum(qty) > 1

where”不能用于聚合函数 - 在这种情况下,您只能在 uniqId 上使用 where

【讨论】:

  • 在类似的注释上,如果我想计算数量超过 1 的不同 uniqID,我该怎么做?我已经尝试从 sum(qty) > 1 的 salesdata 中选择 count(distinct uniqID),以及通过 sum(qty) > 1 的 uniqID 从 salesdata 组中选择 count(distinct uniqID),但这些都不起作用
  • 您提出的问题不太有效。如果您要求不同的uniqIDs,当有多个具有相同uniqID 的行时,您使用哪个qty
  • 我猜uniqID上应该有一个唯一键(不确定sqlite中的细节),这样你就不能有任何重复。
【解决方案2】:

如果您想对通过 group by 获得的结果设置任何条件,则必须使用 having。

select uniqID, sum(qty) as sumqty from salesdata group by uniqID having sumqty > 1

你可以把任何条件都放在 where 中。

having sumqty = 1 ,having sumqty < 1 ,having sumqty IN (1,2,3) etc..

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多