【问题标题】:SQL Query - using COUNTSQL 查询 - 使用 COUNT
【发布时间】:2014-08-19 15:13:59
【问题描述】:

我有一个这样的数据库结构:

Table - lodges
LodgeID (PK)
Lodge
etc

Table - scores
ScoreID (PK)
Score
CategoryID
LodgeID (FK)

我正在尝试以以下形式返回结果:

LodgeID、Lodge、类别、该类别的分数、该类别的平均分数

例如,如果我有:

旅馆

LodgeID, Lodge
1, Lodge One
2, Lodge Two

分数

ScoreID, Score, CategoryID, LodgeID
1, 3, 101, 1
2, 5, 101, 1
3, 7, 101, 1
4, 10, 102, 2
5, 20, 102, 2
6, 30, 102, 2
7, 40, 102, 2

我想回来:

1, Lodge One, 3, 5
2, Lodge Two, 4, 25

我一直在尝试这样的事情:

SELECT        COUNT(ScoreID) as scoreCount, AVG(Score) as AverageScore, Lodge 
FROM          scores_temp 
INNER JOIN    lodges_temp ON scores_temp.LodgeID = lodges_temp.LodgeID

SELECT lodges_temp.LodgeID, Lodge, COUNT(ScoreID) as scoreCount, AVG(Score) as AverageScore FROM lodges_temp INNER JOIN scores_temp ON lodges_temp.LodgeID = scores_temp.LodgeID

没有任何成功。任何指针将不胜感激。

【问题讨论】:

  • 你应该看看GROUP BY
  • 您是否在最后添加了 Group By Lodge?

标签: sql


【解决方案1】:

试试这个

SELECT        COUNT(ScoreID) as scoreCount, AVG(Score) as AverageScore, Lodge 
FROM          scores_temp 
INNER JOIN    lodges_temp ON scores_temp.LodgeID = lodges_temp.LodgeID
GROUP BY Lodge

【讨论】:

    【解决方案2】:

    您缺少group by 子句:

    SELECT     COUNT(ScoreID) as scoreCount, AVG(Score) as AverageScore, Lodge 
    FROM       scores
    INNER JOIN lodges ON scores.LodgeID = lodges.LodgeID
    GROUP BY   lodge
    

    【讨论】:

    • 谢谢!我总是忘记 Group By!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2011-12-11
    • 1970-01-01
    • 2021-10-28
    • 2019-01-04
    • 2020-10-07
    • 2011-03-28
    相关资源
    最近更新 更多