从sql请求创建工作表

从sql请求创建工作表,sql,sql-server,Sql,Sql Server,我正在请求从游戏数据库中获取值,以帮助开发人员根据每10级使用的符文和符文升级情况进行平衡,因此,我为每10级创建了一个请求,并将var更改为符文ID(总共有60个符文,所以我做了60次),对于每一个结果,我都会手动填写一张谷歌表格。 我想知道是否有可能在一个请求中直接创建所有这些请求,这样我就可以复制列并通过所有请求,这将使我赢得很多时间,即使有可能,也可以同时创建所有符文,所以只需简单的复制粘贴,所有数据都在那里 下面是我用来获取符文值的代码,每10级,从1级到130级,在130级之后,所有

我正在请求从游戏数据库中获取值,以帮助开发人员根据每10级使用的符文和符文升级情况进行平衡,因此,我为每10级创建了一个请求,并将var更改为符文ID(总共有60个符文,所以我做了60次),对于每一个结果,我都会手动填写一张谷歌表格。 我想知道是否有可能在一个请求中直接创建所有这些请求,这样我就可以复制列并通过所有请求,这将使我赢得很多时间,即使有可能,也可以同时创建所有符文,所以只需简单的复制粘贴,所有数据都在那里

下面是我用来获取符文值的代码,每10级,从1级到130级,在130级之后,所有符文都在同一个请求中

declare @runeID varchar(100)
set @runeID=22001

select counT(i.characterid) as 'user level 1 to 10', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>0 and level<11 and attached>0
select counT(i.characterid) as 'user level 11 to 20', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>10 and level<21 and attached>0
select counT(i.characterid) as 'user level 21 to 30', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>20 and level<31 and attached>0
select counT(i.characterid) as 'user level 31 to 40', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>30 and level<41 and attached>0
select counT(i.characterid) as 'user level 41 to 50', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>40 and level<51 and attached>0
select counT(i.characterid) as 'user level 51 to 60', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>50 and level<61 and attached>0
select counT(i.characterid) as 'user level 61 to 70', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>60 and level<71 and attached>0
select counT(i.characterid) as 'user level 71 to 80', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>70 and level<81 and attached>0
select counT(i.characterid) as 'user level 81 to 90', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>80 and level<91 and attached>0
select counT(i.characterid) as 'user level 91 to 100', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>90 and level<101 and attached>0
select counT(i.characterid) as 'user level 101 to 110', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>100 and level<111 and attached>0
select counT(i.characterid) as 'user level 111 to 120', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>110 and level<121 and attached>0
select counT(i.characterid) as 'user level 121 to 130', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>120 and level<131 and attached>0
select counT(i.characterid) as 'user level 131+', avg(i.maxUpgrade) as 'average level' from items i inner join characters c on i.characterId=c.characterId 
        where itemId=@runeID and level>130 and attached>0
declare@runeID varchar(100)
设置为@runeID=22001
选择counT(i.characterid)作为“用户级别1到10”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>0和level0
选择counT(i.characterid)作为“用户级别11到20”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>10和level0
选择counT(i.characterid)作为“用户级别21到30”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>20和level0
选择counT(i.characterid)作为“用户级别31到40”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>30和level0
选择counT(i.characterid)作为“用户级别41到50”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>40和level0
选择counT(i.characterid)作为“用户级别51到60”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>50和level0
选择counT(i.characterid)作为“用户级别61到70”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>60和level0
选择counT(i.characterid)作为“用户级别71到80”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>70和level0
选择counT(i.characterid)作为“用户级别81到90”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>80和level0
选择counT(i.characterid)作为“用户级别91到100”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>90和level0
选择counT(i.characterid)作为“用户级别101到110”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>100和level0
选择counT(i.characterid)作为“用户级别111到120”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>110和level0
选择counT(i.characterid)作为“用户级别121到130”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID和level>120和level0
选择counT(i.characterid)作为“用户级别131+”,avg(i.maxUpgrade)作为“平均级别”,从i.characterid=c.characterid上的项目i内部连接字符c
其中itemId=@runeID,级别>130,附加>0
所以现在这个查询给了我14个结果(我只能用2个信息复制2个信息,每10个等级的使用次数和平均等级),所以总共28个信息来手动填充一个符文。 再次,我来这里是想看看是否有可能将所有28个信息放在一个2列的表格中,我可以直接复制所有28个信息,或者甚至是一个更大的表格,我可以在一个数组中输入所有符文ID,它可以做一个包含所有符文的巨大表格,每个符文2列,你能做到吗

select floor((level - 1) / 10) * 10 as range_start,
       count(*) as num_user,
       avg(i.maxUpgrade) as avg_level
from items i inner join
     characters c
     on i.characterId = c.characterId
where attached > 0
group by floor((level - 1) / 10) * 10
order by nmin(level);

这并不是将130以上的所有内容都放在同一个组中,但这只是对查询的一个简单调整。

这里是另一种方法

select lvl.lvl as range_start,
       avg(i.maxUpgrade) as tot_avg_level,
       count(i.characterId) as tot_num_users
from items i 
     join characters c on i.characterId = c.characterId
     cross apply (select (c.[level]/10)*10 lvl) lvl
where attached > 0
group by lvl.lvl
order by lvl.lvl;

使用GROUP BY进行一次选择。我查看了有关GROUP BY的sql文档,但我不太明白如何在我的案例中使用它。这是的副本?不是真正的副本,在这里我得到了一个关于为单个符文重新组合结果的解决方案,在另一个问题上,我希望使用一段时间在单个查询中执行所有符文,如果我要添加更多符文,只需将符文id添加到数组中,我就可以更轻松地更新代码。我试图得到的是具有特定符文id的行数和该符文的平均级别,这里我没有得到符文的数量,同样对于“range_start”,它从0开始,然后是130,然后是50,etci added
count(I.characterId)作为‘用户数’,
获取用户数,但如何按级别范围asc进行分组?同样需要级别1到9,然后10到19,等等。。但是我想要1到10,11到20等等…我使用了
按范围排序\u start ASC
但是范围仍然是错误的,因为它是1-9,10-19等等,而不是1-10,11-20,etc@SamyPereger . . . 通过减去1,范围问题很容易解决。