;WITH CTE AS (
SELECT [RGTCID]
,ltrim(rtrim(T.N.value('.','varchar(100)'))) as Querystr
FROM [R_GT_Collection]
cross apply RGTCData.nodes('//*[@data-type="Collection"]/@Query') T(N)
where N.value('../@data-from','varchar(100)') is null
)
,CollectionIDs AS(
select y.t_str,count(distinct x.RGTCID) CollectionCount from cte x
CROSS APPLY dbo.f_split(SUBSTRING(Querystr,CHARINDEX('(',Querystr)+1,CHARINDEX(')',Querystr)-CHARINDEX('(',Querystr)-1),',') y
group by y.t_str
)
,CTE2 AS (
SELECT [RGTBID]
,ltrim(rtrim(T.N.value('.','varchar(100)'))) as Querystr
FROM [R_GT_Brand]
cross apply RGTBData.nodes('//*[@data-type="Collection"]/@Query') T(N)
where N.value('../@data-from','varchar(100)') is null
)
,CollectionIDs2 AS(
select y.t_str,count(distinct x.RGTBID) CollectionCount from cte2 x
CROSS APPLY dbo.f_split(SUBSTRING(Querystr,CHARINDEX('(',Querystr)+1,CHARINDEX(')',Querystr)-CHARINDEX('(',Querystr)-1),',') y
group by y.t_str
)
,CTE3 AS (
SELECT [RGTGID]
,ltrim(rtrim(T.N.value('.','varchar(100)'))) as Querystr
FROM [R_GT_Guru]
cross apply RGTSData.nodes('//*[@data-type="Collection"]/@Query') T(N)
where N.value('../@data-from','varchar(100)') is null
)
,CollectionIDs3 AS(
select y.t_str,count(distinct x.RGTGID) CollectionCount from cte3 x
CROSS APPLY dbo.f_split(SUBSTRING(Querystr,CHARINDEX('(',Querystr)+1,CHARINDEX(')',Querystr)-CHARINDEX('(',Querystr)-1),',') y
group by y.t_str
)
,CTE4 AS (
SELECT [RGTSID]
,ltrim(rtrim(T.N.value('.','varchar(100)'))) as Querystr
FROM [R_GT_Story]
cross apply RGTSData.nodes('//*[@data-type="Collection"]/@Query') T(N)
where N.value('../@data-from','varchar(100)') is null
)
,CollectionIDs4 AS(
select y.t_str,count(distinct x.RGTSID) CollectionCount from cte4 x
CROSS APPLY dbo.f_split(SUBSTRING(Querystr,CHARINDEX('(',Querystr)+1,CHARINDEX(')',Querystr)-CHARINDEX('(',Querystr)-1),',') y
group by y.t_str
) select c.CollectionID,isnull(m.CollectionCountSum,0) as CollectionCountSum FROM [R_GT_Collection] c
left join (
select t_str,sum(CollectionCount) as CollectionCountSum from (
select t_str,CollectionCount from CollectionIDs
union all
select t_str,CollectionCount from CollectionIDs2
union all
select t_str,CollectionCount from CollectionIDs3
union all
select t_str,CollectionCount from CollectionIDs4
) z
group by t_str
) m
on c.CollectionID=m.t_str
order by 1

一个Sql备注的更多相关文章

  1. mysql中如何在命令行中,执行一个SQL脚本文件?

    需求描述: 在mysql数据库的使用中,有的时候,需要直接在shell的命令行中,执行某个SQL脚本文件, 比如,要初始化数据库,创建特定的存储过程,创建表等操作,这里进行一个基本的测试. 一般情况, ...

  2. Oracle数据库该如何着手优化一个SQL

    这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...

  3. MySQL GROUP_CONCAT函数使用示例:如何用一个SQL查询出一个班级各个学科第N名是谁?

    如何用一个SQL查询出一个班级各个学科第N名是谁? 首先贴出建表语句,方便大家本地测试: -- 建表语句 CREATE TABLE score ( id INT NOT NULL auto_incre ...

  4. 一个 Sql语句优化的问题- STATISTICS 统计信息

    前段时间,同事遇到一个 Sql语句的问题,一个列表分页功能响应在30 s以上,看数据库里面的数据条数,数据量也不大,相关字段的一些索引也都有,可就是慢.于是找出具体的sql 语句出来分析,分页功能主要 ...

  5. 用scala实现一个sql执行引擎-(上)

    前言 在实时计算中,通常是从队列中收集原始数据,这种原始数据在内存中通常是一个java bean,把数据收集过来以后,通常会把数据落地到数据库,供后面的ETL使用.举个一个简单的例子,对一个游戏来说, ...

  6. SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划

    我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...

  7. 一个SQL Server 2008 R2 死锁的问题解决

    问题场景:在客户那碰到一个操作卡死的现象 问题解决: 1.如何挂钩是死锁问题:通过代码跟踪,发现是指执行一个SQL语句超时,因此猜想可能是表锁住了 2.如果确认是思索问题:通过SQL发现死锁,以下是相 ...

  8. 一个sql导致temp表空间爆掉

    Buffer sort引发的血案 今天遇到的一个问题,在线系统上,有两张表,test1大概50G,test2大概200G,需要查询出来test1表中部分记录,并且这些记录不存在test2表中.于是就写 ...

  9. 自己实现一个SQL解析引擎

    自己实现一个SQL解析引擎 功能:将用户输入的SQL语句序列转换为一个可运行的操作序列,并返回查询的结果集. SQL的解析引擎包含查询编译与查询优化和查询的执行,主要包含3个步骤: 查询分析: 制定逻 ...

随机推荐

  1. windows下安装ImageMagick

    最近在开发过程中用到了ImageMagick,结合网上的教程做一下记录 安装的具体步骤可以参考http://blog.csdn.net/belen_xue/article/details/728962 ...

  2. 几大PHP套件

    UPUPW:http://www.upupw.net/ PHPStudy:http://www.phpstudy.net/ PHPNow:http://servkit.org/

  3. WCF 身份验证 通过检查客户端IP

    WCF 身份验证 功能描述: 服务运行的时候,通过配置文件获取所有可访问SOA端的服务IP.每次客户调用服务时获取IP对比判定通过. 以下是获取客户端IP的代码: /***************** ...

  4. python学习(一) 基础知识

    开始学习<Python基础教程> 1.2 交互式解释器 按照书上的例子敲了个最简单的print函数,居然报错: >>> print "fsdfs"Sy ...

  5. mybatis~动态SQL(1)

    动态SQL MyBatis还有一个方便的功能就是动态SQL,可以根据条件智能生成SQL语句.这里的例子全部来自MyBatis文档. if标签 下面这个例子使用了MyBatis的if元素,在标题不为空的 ...

  6. VMware虚拟机上网络连接模式bridged(桥接模式)

    VMware虚拟机上网络连接模式bridged(桥接模式)的实质就是虚拟机本身利用主机的网卡对外直接作为一个真实的物理主机存在. 也就是理论上此时的虚拟机和主机没什么关系,只是和主机公用了一块网卡,其 ...

  7. hardentools

     Hardentools是一组简单的实用程序,旨在禁用操作系统(Microsoft Windows,现在)以及主要的消费者应用程序公开的许多“功能”.这些通常为企业客户所设想的功能,对于普通用户来说通 ...

  8. Access 数据库的数据类型

    今天开发数据库通用组件时,做C#数据库类型与Access数据库类型的相互转化时,发现Access中“text”类型的最大长度为255,当长度超过255时,需改用“Memo”类型,但需要注意备注(Mem ...

  9. How To Install Git on CentOS 7

    Introduction Version control has become an indispensable tool in modern software development. Versio ...

  10. MySQL高可用MHA实战

    MySQL高可用架构MHA介绍 简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职 ...