Novedades

 
 
Imagen de Leopoldo Acal
Reto SQL - SQL Challenge
de Leopoldo Acal - miércoles, 6 de febrero de 2013, 12:44
 

This challenge consists in create a Game Schedule generator in T-SQL

Sample Data

01.TeamID TeamName LeagueID
02.------ -------- --------
03.1      Greece   A
04.2      Russia   A
05.3      France   A
06.4      Sweden   A
07.5      Italy    A
08.6      Portugal A
09.7      Poland   A
10.8      Croatia  A
11.9      England  A
12.10     Denmark  A
13.11     Spain    A
14.12     Germany  A

Expected Results

001.LeagueID Round Home Team Away Team
002.-------- ----- --------- ---------
003.A        1     Greece    Russia
004.A        1     France    Sweden
005.A        1     Italy     Portugal
006.A        1     Poland    Croatia
007.A        1     England   Denmark
008.A        1     Spain     Germany
009.A        2     Denmark   Spain
010.A        2     England   Croatia
011.A        2     Greece    Germany
012.A        2     Sweden    Italy
013.A        2     Poland    Portugal
014.A        2     Russia    France
015.A        3     France    Italy
016.A        3     Germany   Russia
017.A        3     Croatia   Denmark
018.A        3     England   Poland
019.A        3     Greece    Spain
020.A        3     Portugal  Sweden
021.A        4     Sweden    Poland
022.A        4     Italy     Greece
023.A        4     Portugal  France
024.A        4     Russia    Denmark
025.A        4     Germany   England
026.A        4     Croatia   Spain
027.A        5     Croatia   Portugal
028.A        5     Denmark   Germany
029.A        5     England   Spain
030.A        5     Greece    France
031.A        5     Russia    Sweden
032.A        5     Poland    Italy
033.A        6     Germany   France
034.A        6     Sweden    England
035.A        6     Russia    Poland
036.A        6     Spain     Portugal
037.A        6     Croatia   Italy
038.A        6     Denmark   Greece
039.A        7     Russia    Croatia
040.A        7     Portugal  Denmark
041.A        7     Sweden    Greece
042.A        7     Italy     England
043.A        7     Spain     France
044.A        7     Germany   Poland
045.A        8     England   Greece
046.A        8     Poland    Spain
047.A        8     France    Denmark
048.A        8     Portugal  Germany
049.A        8     Italy     Russia
050.A        8     Sweden    Croatia
051.A        9     Spain     Sweden
052.A        9     Russia    Portugal
053.A        9     Germany   Italy
054.A        9     Croatia   Greece
055.A        9     Denmark   Poland
056.A        9     France    England
057.A        10    Portugal  England
058.A        10    Greece    Poland
059.A        10    Spain     Russia
060.A        10    Germany   Sweden
061.A        10    France    Croatia
062.A        10    Italy     Denmark
063.A        11    Croatia   Germany
064.A        11    Spain     Italy
065.A        11    Denmark   Sweden
066.A        11    France    Poland
067.A        11    Portugal  Greece
068.A        11    England   Russia
069.A        12    Portugal  Italy
070.A        12    Denmark   England
071.A        12    Croatia   Poland
072.A        12    Russia    Greece
073.A        12    Germany   Spain
074.A        12    Sweden    France
075.A        13    Germany   Greece
076.A        13    Portugal  Poland
077.A        13    Italy     Sweden
078.A        13    Spain     Denmark
079.A        13    France    Russia
080.A        13    Croatia   England
081.A        14    Denmark   Croatia
082.A        14    Spain     Greece
083.A        14    Poland    England
084.A        14    Italy     France
085.A        14    Sweden    Portugal
086.A        14    Russia    Germany
087.A        15    France    Portugal
088.A        15    England   Germany
089.A        15    Denmark   Russia
090.A        15    Poland    Sweden
091.A        15    Spain     Croatia
092.A        15    Greece    Italy
093.A        16    Spain     England
094.A        16    Sweden    Russia
095.A        16    France    Greece
096.A        16    Portugal  Croatia
097.A        16    Italy     Poland
098.A        16    Germany   Denmark
099.A        17    Poland    Russia
100.A        17    Italy     Croatia
101.A        17    Portugal  Spain
102.A        17    France    Germany
103.A        17    Greece    Denmark
104.A        17    England   Sweden
105.A        18    Greece    Sweden
106.A        18    France    Spain
107.A        18    England   Italy
108.A        18    Croatia   Russia
109.A        18    Poland    Germany
110.A        18    Denmark   Portugal
111.A        19    Denmark   France
112.A        19    Russia    Italy
113.A        19    Germany   Portugal
114.A        19    Greece    England
115.A        19    Croatia   Sweden
116.A        19    Spain     Poland
117.A        20    Italy     Germany
118.A        20    Poland    Denmark
119.A        20    Greece    Croatia
120.A        20    Sweden    Spain
121.A        20    England   France
122.A        20    Portugal  Russia
123.A        21    Russia    Spain
124.A        21    Croatia   France
125.A        21    Sweden    Germany
126.A        21    England   Portugal
127.A        21    Denmark   Italy
128.A        21    Poland    Greece
129.A        22    Sweden    Denmark
130.A        22    Greece    Portugal
131.A        22    Poland    France
132.A        22    Germany   Croatia
133.A        22    Russia    England
134.A        22    Italy     Spain

Rules

  1. There should be N/2 matches in each round where N is the number of teams in a league
  2. Every team should play in every round
  3. Each team can play only once per round
  4. Each team should play with every other team twice (once at home and once away)
  5. The output should be ordered by LeagueID, Round, Home Team
  6. TeamID is unique
  7. There can be many correct solutions different from the expected output
  8. There will always be at least 2 teams in a league and the number of teams will always be even

Sample Script

Use the TSQL Script given below to generate the source table and fill them with sample data.

 

USE CHALLENGE
GO
IF OBJECT_ID('TC81','U') IS NOT NULL
DROP TABLE TC81
GO
CREATE TABLE TC81(
TeamID INT,
TeamName VARCHAR(50),
LeagueID VARCHAR(50)
)
GO
INSERT INTO TC81(TeamID,TeamName,LeagueID)
VALUES (1,'Greece','A')
,(2,'Russia','A')
,(3,'France','A')
,(4,'Sweden','A')
,(5,'Italy','A')
,(6,'Portugal','A')
,(7,'Poland','A')
,(8,'Croatia','A')
,(9,'England','A')
,(10,'Denmark','A')
,(11,'Spain','A')
,(12,'Germany','A')

Restrictions

  1. This challenge allows multi-statement solutions. Your solution does not need to be a single-query solution.