【问题标题】:SQL - Counting over several groupsSQL - 计算多个组
【发布时间】:2021-02-25 03:00:58
【问题描述】:

我有一个重复 ID 的交易清单,并且我有购买的商品数量。我需要计算一次购买特定数量的物品的次数。

Row ItmNBR TQTY
1 123 5
2 123 5
3 123 5
3 456 25
4 456 19

我需要产生这样的输出......

ItmNBR QTY Occurance
123 5 3
123 19 1
123 25 1

我可以得到结果的前两列,但是当我尝试计算一个分区时,我最终会计算得到重复的数字,因为我只查找 9 个项目,我只计算 Cnt 所在的行数一样的。

    TOT_IVO_ITM_QTY
     Count(*) OVER (PARTITION BY QTY) AS CNT
FROM dataset 
    WHERE YEAR(bus_dt) = 2021
    AND ITM_NBR IN (12639,12940,12949,12955,13485,13666,43950,631343,1103731)
    AND QTY BETWEEN 5 AND 25
    ORDER BY ITM_NBR
    ,QTY
    GROUP BY ITM_NBR, TOT_IVO_ITM_QTY``` 

【问题讨论】:

  • 456 不应该在结果集中吗?

标签: sql count partition


【解决方案1】:

我想你只是想要group by:

select ItmNBR, QTY, count(*)
from t
group by ItmNBR, QTY
order by count(*) desc;

这假设您想要按项目和数量进行计数,这似乎是问题的要点。

【讨论】:

  • 非常感谢...我真的想太多了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
相关资源
最近更新 更多