sql查询连接帮助?

sql查询连接帮助?,sql,join,count,Sql,Join,Count,我有两张表,分别是type(type,playerid)和playerid(playerid,date) 我必须弄清楚每年哪种类型的球员获得了多少“最佳球员奖” 这张桌子应该是这样的 year type noofawards 2011 batsmen 3 2011 bowler 5 2010 batsmen 2 我可以获得每年获得的奖项总数,但不能将它们按类型分开,所以我得到的是 year noofawards 2011 3 sel

我有两张表,分别是type(type,playerid)和playerid(playerid,date) 我必须弄清楚每年哪种类型的球员获得了多少“最佳球员奖”

这张桌子应该是这样的

year type      noofawards
2011 batsmen       3
2011 bowler        5
2010 batsmen       2
我可以获得每年获得的奖项总数,但不能将它们按类型分开,所以我得到的是

year noofawards
2011     3 


select year , count(year) as "Number of awards"
from
(
select to_char(p.date,'YYYY') as year 
from player p, type t
where p.playerid = t.playerid
)
group by year
order by year;

我该怎么办?

您是否尝试了以下方法:

select to_char(p.date,'YYYY') as year
     , type
     , count(*)
from player p, type t
where p.playerid = t.playerid
group by 1,2;
只需使用:

GROUP BY year
       , type

  • 大多数数据库系统都有一个从日期中提取年份的函数(
    YEAR()
    或类似名称)
  • 保留字段或表名,如
    date
    ,不是一个好主意
  • 您还应该尝试学习
    JOIN
    语法,而不是使用
    WHERE
    进行隐式连接
比如:

SELECT YEAR(p.date) AS awardYear
     , t.type
     , COUNT(*) AS "Number of awards"
FROM player p
  JOIN type t
    ON p.playerid = t.playerid
GROUP BY awardYear
       , t.type
ORDER BY awardYear
       , t.type ;

既然这是作业的尖叫声,我就给你一些提示

您不需要使用子查询,您需要在查询中的某个点实际选择类型列。

这应该可以:

SELECT year,
       type,
       COUNT(*) as number
FROM (
       SELECT type,
              to_char(player.date,'YYYY') as year
       FROM player
       NATURAL JOIN type
     ) AS T
GROUP BY year,
         type

类型(类型,玩家ID)和玩家(玩家ID,日期)。。。那个么我们从哪里找到“最佳球员”记录呢?你们可以通过(或“隔离”)多个字段进行分组。探索“分组方式”语法选项。很抱歉,要获得奖项数量,我们必须计算投球手、击球手等的数量。这里缺少的是奖项表本身。您有一个玩家类型表和一个玩家/年份表。基于所提供信息的聚合为您提供了每年不同类型的玩家。(也许我读得太深了。)我需要一年一次地安排它们,这就是我的问题所在。我数不出打字机的数目这还不能给我一个总的打字机数目。。。。我得到的结果是2011年击球手1 2011年击球手1 Wheras我需要2011年击球手2我的年度别名和序号组别可能会根据使用的RDBMS提出挑战。ypercube通过使用列/别名引用对组进行的repsonse更健壮。这仍然没有给出类型的总数。。。。我得到的结果是2011年的击球手1 2011年的击球手1我需要2011年的击球手2我能够抽出这一年的时间。。。。只是在使子查询工作时遇到问题,该子查询将所有类型添加到一个类别下。。。。比如2011年赢得awad的击球手总数和2011年赢得awad的投球手总数等等……@user779214:你试过这个查询吗?它会给你什么结果?你也可以编辑你的问题,并在最后添加一个表格数据的小样本吗?然后我给你一个诚实的投票。对许多学生来说,来这里是为了寻求答案而不是帮助。很高兴看到有人真正想了解正在发生的事情。