您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
-->
当前位置:首页 >> 编程问答 >> MSSQL >> sql统计查询问题

sql统计查询问题

来源:网络整理     时间:2018/1/22 2:13:09     关键词:

关于网友提出的“ sql统计查询问题”问题疑问,本网通过在网上对“ sql统计查询问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: sql统计查询问题

解决方案1:

提问方式非常好 sql统计查询问题

declare @send table(
[serverId] [int] NOT NULL,
[actorId] [bigint] NOT NULL,
[uuid] [bigint] NOT NULL,
[redPackageId] [int] NOT NULL,
[WriteTime] [datetime] NOT NULL

 
insert @send select 1,100,1,2,'2017/12/12 17:45:27'
union all select 1,100,2,2,'2017/12/12 17:45:27'
union all select 1,101,3,2,'2017/12/12 17:45:27'
union all select 1,101,4,2,'2017/12/12 17:45:27'
union all select 2,102,5,2,'2017/12/12 17:45:27'
union all select 2,102,6,2,'2017/12/12 17:45:27'
union all select 2,102,7,2,'2017/12/12 17:45:27'
union all select 3,103,9,2,'2017/12/12 17:45:27'
declare @get table(
[serverId] [int] NOT NULL,
[actorId] [bigint] NOT NULL,
[uuid] [bigint] NOT NULL,
[type] [int] NOT NULL,
[redPackageId] [int] NOT NULL,
[state] [int] NOT NULL,
[money] [int] NOT NULL,
[WriteTime] [datetime] NOT NULL

 
insert @get SELECT 1,100,1,1,0,1,1000,'2017/12/12 17:45:27'
union all select 1,100,2,1,0,1,1000,'2017/12/12 17:45:27'
union all select 1,101,2,1,0,1,1200,'2017/12/12 17:45:27'
union all select 1,101,2,1,0,1,1300,'2017/12/12 17:45:27'
union all select 1,101,2,1,0,1,1400,'2017/12/12 17:45:27'
union all select 1,101,6,1,0,1,1000,'2017/12/12 17:45:27'
union all select 2,102,7,1,0,1,1000,'2017/12/12 17:45:27'
union all select 2,102,8,1,0,1,1000,'2017/12/12 17:45:27'
union all select 2,102,9,1,0,1,1000,'2017/12/12 17:45:27'
union all select 3,104,9,1,0,1,1000,'2017/12/12 17:45:27'
SELECT  CASE WHEN get.actorId IS NOT NULL THEN get.actorId
             ELSE [send].actorId
        END AS actorId ,
        ISNULL(getNumber,0) AS getNumber ,
        ISNULL(sendNumber,0) AS sendNumber
FROM    ( SELECT    actorId ,
                    COUNT(1) AS getNumber
          FROM      @get
          GROUP BY  actorId
        ) get
        FULL JOIN ( SELECT  actorId ,
                            COUNT(1) AS sendNumber
                    FROM    @send
                    GROUP BY actorId
                  ) send ON send.actorId = get.actorId
ORDER BY getNumber + sendNumber DESC

 sql统计查询问题
  • Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题

解决方案2:

SET NOCOUNT ON
declare @send table(
[serverId] [int] NOT NULL,
[actorId] [bigint] NOT NULL,
[uuid] [bigint] NOT NULL,
[redPackageId] [int] NOT NULL,
[WriteTime] [datetime] NOT NULL

insert @send select 1,100,1,2,'2017/12/12 17:45:27'
union all select 1,100,2,2,'2017/12/12 17:45:27'
union all select 1,101,3,2,'2017/12/12 17:45:27'
union all select 1,101,4,2,'2017/12/12 17:45:27'
union all select 2,102,5,2,'2017/12/12 17:45:27'
union all select 2,102,6,2,'2017/12/12 17:45:27'
union all select 2,102,7,2,'2017/12/12 17:45:27'
union all select 3,103,9,2,'2017/12/12 17:45:27'
declare @get table(
[serverId] [int] NOT NULL,
[actorId] [bigint] NOT NULL,
[uuid] [bigint] NOT NULL,
[type] [int] NOT NULL,
[redPackageId] [int] NOT NULL,
[state] [int] NOT NULL,
[money] [int] NOT NULL,
[WriteTime] [datetime] NOT NULL

insert @get select 1,100,1,1,0,1,1000,'2017/12/12 17:45:27'
union all select 1,100,2,1,0,1,1000,'2017/12/12 17:45:27'
union all select 1,101,2,1,0,1,1200,'2017/12/12 17:45:27'
union all select 1,101,2,1,0,1,1300,'2017/12/12 17:45:27'
union all select 1,101,2,1,0,1,1400,'2017/12/12 17:45:27'
union all select 1,101,6,1,0,1,1000,'2017/12/12 17:45:27'
union all select 2,102,7,1,0,1,1000,'2017/12/12 17:45:27'
union all select 2,102,8,1,0,1,1000,'2017/12/12 17:45:27'
union all select 2,102,9,1,0,1,1000,'2017/12/12 17:45:27'
union all select 3,104,9,1,0,1,1000,'2017/12/12 17:45:27'
;WITH cte1 AS(
SELECT t.actorId,COUNT(1) AS sendNumber 
FROM @send t
GROUP BY t.actorId
)
,cte2 AS (
SELECT t.actorId,COUNT(1) AS getNumber 
FROM @get t
GROUP BY t.actorId
)
SELECT 
CASE WHEN cte1.actorId IS NOT NULL THEN cte1.actorId ELSE cte2.actorId END
AS actorId
,ISNULL(cte1.sendNumber,0) AS sendNumber
,ISNULL(cte2.getNumber,0) AS getNumber
FROM cte1 FULL JOIN cte2 ON cte1.actorId=cte2.actorId
/*
actorId              sendNumber  getNumber
-------------------- ----------- -----------
100                  2           2
101      
以上介绍了“ sql统计查询问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4531892.html

相关图片

相关文章