求一个sql 语句。。。

ruolins 2014-06-03 02:31:42
SELECT COUNT(DISTINCT UserID) FROM ChangeMoneyInfo where ChangeTypeID=1 and ChangeTime>=Isnull(@DTime,ChangeTime) and ChangeTime<=Isnull(@DTimeEnd,ChangeTime)


这个是统计当天有多少人充值的,ChangeTypeID=1 代表数据时充值,我想写一个就是在这个时间范围内有哪些人是第一次充值的。不知道怎么写。。。
...全文
159 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruolins 2014-06-03
  • 打赏
  • 举报
回复
引用 15 楼 DBA_Huangzj 的回复:
擦,写出来的和11楼的一样
SELECT  COUNT(DISTINCT UserID)
FROM    [ChangeMoneyInfo] a
WHERE   ChangeTypeID = 1
        AND NOT EXISTS ( SELECT 1
                         FROM   [ChangeMoneyInfo] b
                         WHERE  b.userid = a.userid
                                AND b.ChangeTypeID = 1
                                AND b.changetime < @DTime )
        AND ChangeTime >= @DTime
        AND ChangeTime <= @DTimeEnd
好的,非常感谢。。。
發糞塗牆 2014-06-03
  • 打赏
  • 举报
回复
擦,写出来的和11楼的一样
SELECT  COUNT(DISTINCT UserID)
FROM    [ChangeMoneyInfo] a
WHERE   ChangeTypeID = 1
        AND NOT EXISTS ( SELECT 1
                         FROM   [ChangeMoneyInfo] b
                         WHERE  b.userid = a.userid
                                AND b.ChangeTypeID = 1
                                AND b.changetime < @DTime )
        AND ChangeTime >= @DTime
        AND ChangeTime <= @DTimeEnd
ruolins 2014-06-03
  • 打赏
  • 举报
回复
不算,
引用 13 楼 DBA_Huangzj 的回复:
问下一个情景,比如一个玩家A,在昨天注册,并且昨天充值过一次,而你今天只想统计今年的数据,这个玩家今天又充值了一次,那算不算统计范围内的“第一次”?
發糞塗牆 2014-06-03
  • 打赏
  • 举报
回复
问下一个情景,比如一个玩家A,在昨天注册,并且昨天充值过一次,而你今天只想统计今年的数据,这个玩家今天又充值了一次,那算不算统计范围内的“第一次”?
ruolins 2014-06-03
  • 打赏
  • 举报
回复
CID         UserID      UserName                                           ChangeTypeID OldMoney              ChangeMoney           UserMoney             Explain                                                                                                                                                                                                                                                    ChangeOrderID ChangeOrderNum                                     PSTypeID    ChangeTime
----------- ----------- -------------------------------------------------- ------------ --------------------- --------------------- --------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------- -------------------------------------------------- ----------- -----------------------
452         66666       dayingjia                                          1            50000.00              100.00                49900.00              下单                                                                                                                                                                                                                                                         160858        20140102035_54b469                                 1           2014-01-02 11:43:18.237
453         66666       dayingjia                                          1            49900.00              100.00                49800.00              下单                                                                                                                                                                                                                                                         160867        20140102036_cdc7f8                                 1           2014-01-02 11:53:16.137
454         66666       dayingjia                                          1            49800.00              126.00                49674.00              下单                                                                                                                                                                                                                                                         160876        20140102036_ef47fa                                 1           2014-01-02 11:53:24.590
455         66666       dayingjia                                          1            49674.00              100.00                49574.00              下单                                                                                                                                                                                                                                                         160885        20140113044_43ce5b                                 1           2014-01-13 13:13:16.997
456         66666       dayingjia                                          1            49574.00              18.00                 49556.00              下单                                                                                                                                                                                                                                                         160894        20140113044_9ee81e                                 1           2014-01-13 13:13:23.813
457         66666       dayingjia                                          1            49556.00              2.00                  49554.00              下单                                                                                                                                                                                                                                                         160903        20140114084_534bde                                 1           2014-01-14 19:52:33.863
458         66666       dayingjia                                          1            49554.00              60.00                 49494.00              下单                                                                                                                                                                                                                                                         160912        20140116035_b96368                                 1           2014-01-16 11:48:18.070
459         66666       dayingjia                                          1            49494.00              60.00                 49434.00              下单                                                                                                                                                                                                                                                         160921        20140116036_784fca                                 1           2014-01-16 11:48:35.110
460         66666       dayingjia                                          1            49434.00              2.00                  49432.00              下单                                                                                                                                                                                                                                                         160930        20140116036_609dd1                                 1           2014-01-16 11:48:45.203
461         66666       dayingjia                                          1            49432.00              2000.00               47432.00              下单                                                                                                                                                                                                                                                         160939        20140116036_33c9d2                                 1           2014-01-16 11:48:56.787
462         66666       dayingjia                                          1            47432.00              1980.00               45452.00              下单                                                                                                                                                                                                                                                         160948        20140116019_a270c0                                 1           2014-01-16 11:49:14.157
466         66666       dayingjia                                          1            45389.00              100.00                45289.00              下单                                                                                                                                                                                                                                                         160957        20140120079_fac516                                 1           2014-01-20 18:59:10.507
467         66666       dayingjia                                          1            45289.00              100.00                45189.00              下单                                                                                                                                                                                                                                                         160966        20140120080_e17e75                                 1           2014-01-20 18:59:10.513
468         66666       dayingjia                                          1            45189.00              100.00                45089.00              下单    
在路上_- 2014-06-03
  • 打赏
  • 举报
回复

SELECT  COUNT(DISTINCT UserID)
FROM    ChangeMoneyInfo a
WHERE   ChangeTypeID = 1
        AND ChangeTime >= @DTime
        AND ChangeTime <= @DTimeEnd
        AND NOT EXISTS(SELECT 1 FROM ChangeMoneyInfo
                                          WHERE UserID=a.UserID AND ChangeTypeID = 1 AND ChangeTime<@DTime
                                         )
發糞塗牆 2014-06-03
  • 打赏
  • 举报
回复
额,文本方式贴一下
ruolins 2014-06-03
  • 打赏
  • 举报
回复
有时间列,ChangeTime就是时间
ruolins 2014-06-03
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
[quote=引用 4 楼 jianzhang5555 的回复:] [quote=引用 3 楼 DBA_Huangzj 的回复:] 试试:
SELECT  COUNT(DISTINCT UserID)
FROM    ChangeMoneyInfo
WHERE   ChangeTypeID = 1
        AND ChangeTime >= ISNULL(@DTime, ChangeTime)
        AND ChangeTime <= ISNULL(@DTimeEnd, ChangeTime)
HAVING COUNT(DISTINCT UserID)=1
这个可能不行哦, HAVING COUNT(DISTINCT UserID)=1 这个可能会只是把这段时间内充值了一次的选出来。。。。但是我一个玩家比如当天充值两次,这个估计就会漏掉啊。[/quote]那就去掉distinct[/quote] 貌似去掉也有问题啊, 可能是我没表达清楚,我是要查在这个时间段内的玩家是整个表中第一次充值的个数。。。。
發糞塗牆 2014-06-03
  • 打赏
  • 举报
回复
有时间列不?贴点有代表性的数据来看看
ruolins 2014-06-03
  • 打赏
  • 举报
回复
一个玩家比如在这个时间段注册的,并且充值了两次,这也算一个的啊,总之就是玩家在这个时间段内有在整个表中有第一个充值的记录。。。就算一个。。。。而且一个玩家只算一次。。。
發糞塗牆 2014-06-03
  • 打赏
  • 举报
回复
引用 4 楼 jianzhang5555 的回复:
[quote=引用 3 楼 DBA_Huangzj 的回复:] 试试:
SELECT  COUNT(DISTINCT UserID)
FROM    ChangeMoneyInfo
WHERE   ChangeTypeID = 1
        AND ChangeTime >= ISNULL(@DTime, ChangeTime)
        AND ChangeTime <= ISNULL(@DTimeEnd, ChangeTime)
HAVING COUNT(DISTINCT UserID)=1
这个可能不行哦, HAVING COUNT(DISTINCT UserID)=1 这个可能会只是把这段时间内充值了一次的选出来。。。。但是我一个玩家比如当天充值两次,这个估计就会漏掉啊。[/quote]那就去掉distinct
ruolins 2014-06-03
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
试试:
SELECT  COUNT(DISTINCT UserID)
FROM    ChangeMoneyInfo
WHERE   ChangeTypeID = 1
        AND ChangeTime >= ISNULL(@DTime, ChangeTime)
        AND ChangeTime <= ISNULL(@DTimeEnd, ChangeTime)
HAVING COUNT(DISTINCT UserID)=1
这个可能不行哦, HAVING COUNT(DISTINCT UserID)=1 这个可能会只是把这段时间内充值了一次的选出来。。。。但是我一个玩家比如当天充值两次,这个估计就会漏掉啊。
發糞塗牆 2014-06-03
  • 打赏
  • 举报
回复
试试:
SELECT  COUNT(DISTINCT UserID)
FROM    ChangeMoneyInfo
WHERE   ChangeTypeID = 1
        AND ChangeTime >= ISNULL(@DTime, ChangeTime)
        AND ChangeTime <= ISNULL(@DTimeEnd, ChangeTime)
HAVING COUNT(DISTINCT UserID)=1
ruolins 2014-06-03
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
怎么标识“第一次”
又碰到版主了。。。。就是ChangeMoneyInfo 里面在@DTime 和@DTimeEnd 时间内,就是第一次充值的人数统计,就是在这个时间段之前是没有记录的。
發糞塗牆 2014-06-03
  • 打赏
  • 举报
回复
怎么标识“第一次”

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧