我正在尝试获取一个新列(计算)来根据位置列中的位置分配点,如此图像
我在下面尝试了这个查询,但我的任务没有成功:我寻求你的帮助,请帮助
在sql server中查询
答案 0 :(得分:2)
您无法使用$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Metadata-Flavor: Google'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
return curl_exec($ch);
进行排名。你总会得到" 1"。使用子查询:
apply
我发现算法比select . . .
from (select ae.*, rank() over (order by averagemark desc) as position
from agriculturalentries
) cross join
(values (case when rank >= 13 then 150 - rank * 10 end) ) as v(pointsearned);
更容易输入,但你可以使用更详细的形式。
您可能会问为什么case
总会返回" 1"在您的查询中。这是因为rank()
一次只考虑一行(如所写)。该行的排名必然是" 1"。
答案 1 :(得分:2)
With AllMarks AS
(SELECT
CompetitorID,
ApiEntryId,
AverageMark,
RANK() OVER (ORDER BY AverageMark)AS RankPosition
-- Add other columns
FROM ApicultureEntries
)
SELECT
a.*,(CASE WHEN a.RankPosition < 14 THEN 150 - RankPosition * 10 ELSE NULL END) AS PositionEarned
FROM AllMarks AS a