помогите с соединением запроса sql? - PullRequest
1 голос
/ 01 июня 2011

У меня есть два стола с типом (тип, playerid) и игроком (playerid, дата) я должен выяснить за каждый год, сколько человек из наград матча было выиграно каким типом игрока?

например, таблица должна быть как

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;

что мне делать?

Ответы [ 4 ]

1 голос
/ 01 июня 2011

Просто используйте:

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 ;
1 голос
/ 01 июня 2011

Так как это крики домашней работы, я просто дам подсказки.

вам не нужно использовать подзапросы, и вам нужно фактически выбрать столбец Тип в какой-то момент вашего запроса.

1 голос
/ 01 июня 2011

Вы пробовали следующее:

select to_char(p.date,'YYYY') as year
     , type
     , count(*)
from player p, type t
where p.playerid = t.playerid
group by 1,2;
0 голосов
/ 01 июня 2011

Это должно работать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...