标签: dataexplorer

T-SQL模式匹配异常

这是我在使用基于T-SQL 的Stack Exchange Data Explorer时遇到的一个问题:

如何搜索字符串,除非它作为其他字符串的子字符串出现?

例如,如何MyTable在列中MyCol包含字符串的表中选择所有记录foo,但忽略foo属于字符串的任何s foobar

快速而肮脏的尝试将是这样的:

SELECT * 
FROM MyTable 
WHERE MyCol LIKE '%foo%' 
  AND MyCol NOT LIKE '%foobar%'
Run Code Online (Sandbox Code Playgroud)

但显然这将无法匹配,例如MyCol = 'not all foos are foobars',我想要匹配.

我提出的一个解决方案是foobar用一些虚拟标记(不是子字符串foo)替换所有出现的,然后检查任何剩余的foos,如:

SELECT * 
FROM MyTable 
WHERE REPLACE(MyCol, 'foobar', 'X') LIKE '%foo%'
Run Code Online (Sandbox Code Playgroud)

这有效,但我怀疑它效率不高,因为它必须REPLACE()在表中的每条记录上运行.(对于SEDE,这通常是Posts表,目前有大约3000万行.)有更好的方法吗?

(FWIW,提示此问题的真实用例是搜索带有使用http://方案前缀但未指向主机的图像URL的SO帖子i.stack.imgur.com.)

t-sql sql-server dataexplorer

5
推荐指数
1
解决办法
291
查看次数

我如何在where语句中使用Count(*)?

我不明白为什么这不起作用以及如何解决它,我尝试了各种各样的事情,比如写作

select COUNT(p.OwnerUserId)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我不明白错误消息.我不使用MS SQL(我使用SQLite和MySQL).

我如何编写此查询,以便我可以将质量控制过滤10或50?(QC> 50 AND ...)

基本上将下面的SQL插入到此URL中,运行它,您将在结果中看到1. http://data.stackexchange.com/stackoverflow/query/new

SELECT
    TOP 100
    p.OwnerUserId  AS [User Link],
    sum(ViewCount) as VC,
    avg(ViewCount) as AVC,
    COUNT(p.OwnerUserId ) as QC

FROM Posts p
join Users on p.OwnerUserId = Users.Id
where PostTypeId = 1 and ViewCount<10000 and CommunityOwnedDate is null
group by p.OwnerUserId
order by AVC desc
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server dataexplorer

2
推荐指数
1
解决办法
268
查看次数

SQL:为什么我不能将变量设置为查询结果?

我正在尝试在SO Data Explorer上运行此查询:

DECLARE @totalRep float

SET @totalRep = SELECT SUM(Users.Reputation) FROM Users
Run Code Online (Sandbox Code Playgroud)

而且我一直在努力

关键字'SELECT'附近的语法不正确.

我究竟做错了什么?

sql dataexplorer

2
推荐指数
1
解决办法
415
查看次数

标签 统计

dataexplorer ×3

sql-server ×2

t-sql ×2

sql ×1