我在看这个网站:
set nocount on
DECLARE @endDate date
SELECT @endDate = max(CreationDate) from Posts
set nocount off
SELECT TOP 50
Id AS [User Link], Reputation, Days,
Reputation/Days AS RepPerDays
FROM (
SELECT *,
CONVERT(int, @endDate - CreationDate) as Days
FROM Users
) AS UsersAugmented
WHERE
Reputation > 5000
ORDER BY
RepPerDays DESC
我也是SQL的初学者。我对此代码有以下问题:
set nocount off
[User Link]
CONVERT(int, @endDate - CreationDate) as Days
谢谢!
答案 0 :(得分:4)
答案 1 :(得分:2)
1。它是Microsoft SQL Azure Database,但语法(Transact-SQL或T-SQL)与SQL Server相同(因为Azure数据库“基于SQL Server技术”)。
2。这在T-SQL documentation for SET NOCOUNT。
中有所描述当SET NOCOUNT为ON时,不返回计数(表示受Transact-SQL语句影响的行数)。
3。如果列名包含任何会使解析器混淆的字符,则需要在列名周围放置方括号。在这种情况下,由于空间的原因,这是必要的。
4。为了理解CONVERT(int, @endDate - CreationDate) as Days
,我们将它分成更小的部分并单独处理:
@endDate - CreationDate
计算最近一个帖子与用户帐户创建日期之间的时间。这给出了用户帐户在最后一次数据转储中存在的时间。
CONVERT(int, @endDate - CreationDate)
将之前计算的结果转换为以天为单位的整数。
as Days
是别名,因此结果易于阅读。
答案 2 :(得分:1)