【问题标题】:SQL query to count number of rows with same valueSQL查询计算具有相同值的行数
【发布时间】:2018-08-09 20:52:48
【问题描述】:

我有这个表数据:

我想执行一个 sql 查询,它会给出每个城市不同贷款申请的总数。

例如,我希望这个输出

City Wexford
Loans 1

City Waterford 1 
Loans 1

City Galway
Loans 3

知道我需要执行哪种查询来获取每个城市的不同贷款数量吗?

【问题讨论】:

  • 我注意到 LoanApplicationID 并不是一个城市独有的。例如 LoanApplicationID 3380 出现在 Dublin 8 和 Galway City ?这是准确的数据吗?
  • 到目前为止你尝试了什么????
  • @DaniDev 一个应用程序可以有多个属性,例如,一个在都柏林 8,一个在戈尔韦市。

标签: sql sql-server tsql sql-server-2012 sql-server-2014


【解决方案1】:

我猜,可能是带有 GROUP BY 的 COUNT(不同 ID)。像这样的:

SELECT city, COUNT(DISTINCT LoanApplicationID) as Loans
FROM tableName
GROUP BY city

【讨论】:

  • @Laziale 那么你应该考虑接受这个答案。它奖励回答者,并防止其他人在其他问题仍然需要帮助时进入这个已解决的问题
  • @Laziale 请参阅我在 OP 中的评论。 LoanApplicationID 怎么不是一个城市独有的?这会影响您想要的结果吗?
  • @Laziale,我的问题的原因是这个解决方案会将这样的 applicationID 计算两次。每个 CityProperty 一次。所以我想知道查询是否需要考虑这一点?
  • @DaniDev 它应该计算每笔贷款的不同城市,而不是每笔财产。请让我知道是否需要进行一些调整。谢谢
  • 您的 OP 说“我......每个城市的不同贷款申请总数。”这就是这个答案所提供的。但是需要注意的是,相同的贷款可以计算(两次或更多),因为它可以应用于不同的城市。所以有一个问题,这是否是你所追求的结果。您的上述陈述“每笔贷款应计算不同的城市”完全是一个不同的查询。请澄清你的意思?
【解决方案2】:

这是解决此问题的另一种方法。我添加这个是因为使用DISTINCT 可能会导致另一个示例的性能问题,尤其是对于大型数据库。记住这一点很好。

select city,count(LoanApplicationID) as Loans
from (
        select LoanApplicationID, city
        from tablename
        group by LoanApplicationID, city 
     ) t
group by city

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多