用于计数记录的 SQL 查询,其中计数 = 1 且值 <50



我有一个名为NETWORK的表。在这个表中我有Card日期,。我想按年和月计算值为<= 50的所有不同卡片。

场景:如该卡在一个月内有10笔交易,而"所有值"少于50,则应计算一次(单独计数);否则,如果其中一个Value大于50,则不应考虑它。

样本数据:

1. Card    Date    Value
443138XXXXXX0977    2020-01-13  42
443138XXXXXX0977    2020-01-04  50
443138XXXXXX0977    2020-01-22  43
443138XXXXXX0977    2020-02-22  29
524417XXXXXX7034    2020-01-10  38
524417XXXXXX7034    2020-01-07  35
443138XXXXXX4095    2020-01-28  17
443138XXXXXX4095    2020-01-02  37
443138XXXXXX4095    2020-01-27  55
471365XXXXXX0755    2021-03-10  69
471365XXXXXX0756    2021-03-10  22

谢谢。

SELECT 
t1.Card,
COUNT(*)
FROM Table t1
WHERE Value <= 50 AND NOT EXISTS(SELECT 1 FROM Table t2 WHERE t1.Card=t2.Card AND t2.Value>50)
GROUP BY 
t1.Card,
Year(t1.Date), Month(t1.Date)
HAVING Count(*)=10
  • WHERE将过滤值为<= 50的所有行,仅过滤值>50不存在的行
  • HAVING将过滤分组记录计数为10

应该和你说的一模一样:

Select count(distinct Card)
From Network
Where Value<=50

相关内容

  • 没有找到相关文章

最新更新