【问题标题】:Selecting 7th Person (row) and get 7 as result选择第 7 个人(行)并得到 7 作为结果
【发布时间】:2020-07-03 10:06:05
【问题描述】:

我想选择第 7 个人(例如 Pierre Gasly)Score list Season F1,所以我可以在我的 C# 应用程序中返回数字 7。

SELECT CONCAT(strVoorNaam, strTussenVoegsel, ' ',  strAchterNaam) AS Naam, SUM(CAST(tblPunten.strScore AS INT)) AS score
FROM tblPunten
JOIN tblPuntenCoureur ON tblPuntenCoureur.PuntenID = tblPunten.ID
JOIN tblPersoon ON tblPersoon.ID = tblPuntenCoureur.PersoonID
JOIN tblSeizoen ON tblSeizoen.ID = tblPuntenCoureur.SeizoenID
WHERE tblPunten.ID != 12 AND tblPunten.ID != 13 AND  tblPunten.ID != 14 AND  tblPunten.ID != 15
AND  tblPunten.ID != 16 AND  tblPunten.ID != 17 AND  tblPunten.ID != 18 AND  tblPunten.ID != 19 AND tblSeizoen.intJaartal = 2019 
GROUP BY CONCAT(strVoorNaam, strTussenVoegsel, ' ',  strAchterNaam), tblPersoon.strAchterNaam
ORDER BY score DESC

【问题讨论】:

    标签: c# sql sql-server tsql sql-order-by


    【解决方案1】:

    使用行限制子句:

    select 
        concat(strvoornaam, strtussenvoegsel, ' ',  strachternaam) as naam, 
        sum(cast(pu.strscore as int)) as score
    from tblpunten pu
    join tblpuntencoureur pc on pc.puntenid = pu.id
    join tblpersoon pe on pe.id = pc.persoonid
    join tblseizoen se on se.id = pc.seizoenid
    where pu.id not between 12 and 19 and se.intjaartal = 2019 
    group by strvoornaam, strtussenvoegsel, strachternaam, pe.strachternaam
    order by score desc
    offset 6 rows fetch next 1 row only
    

    这将为您提供结果集中的第七行。

    旁注:

    • 表别名有助于保持查询简洁且易于编写
    • 您应该对查询中起作用的所有列进行限定

    另一方面,如果您想获得特定人的等级,那就不同了。您可以改用rank()

    select *
    from (
        select 
            concat(strvoornaam, strtussenvoegsel, ' ',  strachternaam) as naam, 
            sum(cast(pu.strscore as int)) as score,
            rank() over(order by sum(cast(pu.strscore as int)) desc) rn
        from tblpunten pu
        join tblpuntencoureur pc on pc.puntenid = pu.id
        join tblpersoon pe on pe.id = pc.persoonid
        join tblseizoen se on se.id = pc.seizoenid
        where pu.id not between 12 and 19 and se.intjaartal = 2019 
        group by strvoornaam, strtussenvoegsel, strachternaam, pe.strachternaam
    ) t
    where naam = 'Pierre Gasly'
    

    【讨论】:

    • 感谢您的评论,但我现在没有得到 7。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    相关资源
    最近更新 更多