0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 9
1

Как посчитать количество выигрышей команды в таблице матчи

10.11.2011, 20:59. Показов 5045. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый День!
Есть таблица матчей
там есть такие поля:
Team1(первая команда - хозяева)
Team2(вторая команда - гости)
score1(кол-во голов забитых 1-й командой)
score2(количество голов забитых 2-й командой)
data(дата матча)
report(описание матча)

Мне надо вывести в виде запроса
Название команди || Выигр

Нужно посчитать количество выигрышей команды в таблице матчи так,например
Реал || 3

Помогите пожалуйста!А то я только начинающий в этом деле,буду рад помощи!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2011, 20:59
Ответы с готовыми решениями:

как проще посчитать количество записей в таблице
как проще посчитать количество записей в таблице и как ипользовать потом полученное значение в...

Не могу посчитать количество строк в таблице
Имеется задание: "Наименование организации, количество сотрудников в возрасте 25 лет. Код: ...

В массиве записаны результаты N игр футбольной команды. Определить количество выигрышей, количество проигрышей и количество ничьих данной команды.
Помогите пожалуйста решить задачу. НА С# труда не составляет а вот на С++ не получается. 1. В...

В массиве записаны результаты 20 игр футбольной команды. Определить количество выигрышей, количество ничьих и количество проигрышей данной команды
В массиве записаны результаты 20 игр футбольной команды(если игра окончилась выигрышем данной...

10
Змеюка одышечная
9864 / 4595 / 178
Регистрация: 04.01.2011
Сообщений: 8,556
10.11.2011, 21:14 2
Jmanx, в деле чего вы начинающий? вам программу нужно составить? если да, то на каком языке?
0
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
10.11.2011, 21:17 3
Цитата Сообщение от vetvet Посмотреть сообщение
в деле чего вы начинающий?

Не по теме:

Букмекеры наверно на форум наведались :D

0
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 9
10.11.2011, 21:59  [ТС] 4
Я работаю в SQL
Процедура которая бы находила название этой команды либо в поле team1 либо в team2 и соответсвтенно рисовала таблицу такого вида:
Название команди || Выигр

Я вот написал код
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE PROCEDURE statistica
@команда CHAR(40),@в:=0 INT output 
AS
BEGIN
SELECT DISTINCT @команда AS 'Название команды',COUNT(*) AS 'Кол-во матчей',AS 'выигр'
FROM [dbo].[MATCH]
WHERE Team1=@команда OR Team2=@команда
END
BEGIN
IF (Team1=@команда AND score1>score2) OR (Team2=@команда AND score1<score2)  THEN @в:=в+1
END
 
Но при запуске выдает ошибки:
 
ErrorMessage: Incorrect syntax near ':'.
Must DECLARE the scalar variable "@в".
Incorrect syntax near the keyword 'then'.
Помогите разобраться пожалуйста Velvet!
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
11.11.2011, 10:42 5
SQL
1
2
3
4
5
6
SELECT
 [Название команды]=CASE WHEN score1>score2 THEN Team1 ELSE Team2 END
,[Выигр]=COUNT(*)
FROM [dbo].[MATCH]
WHERE score1<>score2
GROUP BY CASE WHEN score1>score2 THEN Team1 ELSE Team2 END;
0
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 9
11.11.2011, 13:01  [ТС] 6
Спасибо).Но процедура выдает NULL в выгрышах для любой команды.Я когда выполняю запрос непосредственно вызовом процедуры вот таким образом
T-SQL
1
2
3
DECLAREint
EXEC statistica Beshiktash ,@в output 
SELECT
То в результате вижу
Beshiktash 4 NULL
Тоесть 4 игры а выгр принимает значение NULL.

Что означает WHERE score1<>score2 в коде?
Заранее спасибо за разьяснение!
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
11.11.2011, 16:00 7
Цитата Сообщение от Jmanx Посмотреть сообщение
Спасибо).Но процедура выдает NULL в выгрышах для любой команды.Я когда выполняю запрос непосредственно вызовом процедуры вот таким образом
DECLARE @в int
EXEC statistica Beshiktash ,@в output
SELECT @в
То в результате вижу
Beshiktash 4 NULL
Тоесть 4 игры а выгр принимает значение NULL.

Что означает WHERE score1<>score2 в коде?
Заранее спасибо за разьяснение!
Я не писал никакую процедуру.
Только показал, как получить искомый результат сразу для всех команд.
Осталось только написать условие, выбирающее из него то, что надо.

Когда score1=score2, то это ничья, так? А разве про ничьи кто-нибудь говорил? Вот я их и выбросил (score1<>score2)

Поскольку я не видел, что там теперь в процедуре, то невозможно ничего сказать про @в
Вы его передаёте даже в неинициализированном виде (то есть, там сидит NULL).
Почитайте про NULL, что ли...
0
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 9
18.11.2011, 01:00  [ТС] 8
Но почему же для всех.Когда я задаю запрос на выполнение четко указуя параметр Beshiktash:

SQL
1
2
3
DECLAREINT
EXEC statistica Beshiktash ,@в output 
SELECT
А таблица такая

Beshiktash Dinamo K 1 0
Beshiktash Makkabi 5 1
Dinamo K Beshiktash 1 0
Dinamo K Stoke City 1 1
Makkabi Dinamo K 1 1
Makkabi Stoke City 1 2
Stoke City Beshiktash 2 1
Stoke City Makkabi 3 0

Прошу разьяснить а то пока не могу понять.

Добавлено через 9 минут
Вот мой вариант подсчета выигрышей

SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE PROC mine1
@club CHAR(40)
AS
SELECT DISTINCT Team1 AS 'Название команды',COUNT(*) AS 'Кол-во выигрышей'
FROM [dbo].[MATCH]
WHERE Team1=@club AND score1>score2
GROUP BY Team1
UNION
SELECT DISTINCT Team2 AS 'Название команды',COUNT(*) AS 'Кол-во выигрышей'
FROM [dbo].[MATCH]
WHERE Team2=@club AND score1<score2
GROUP BY Team2
Выдает при выполнении вот такое

Stoke City 1
Stoke City 2

Это программа считает отдельно домашние выигрыши(2) и выездные(1).А как сделать что бы выдавало общее (3) с одним рядком вот так
Stoke City 3

Буду рад помощи.
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
18.11.2011, 10:09 9
SQL
1
2
3
4
CREATE PROCEDURE statistica @команда CHAR(40) AS
SELECT [Выигр]=COUNT(*)
FROM [dbo].[MATCH]
WHERE score1<>score2 AND (score1>score2 AND Team1=@команда OR score1<score2 AND Team2=@команда);
0
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 9
20.11.2011, 00:37  [ТС] 10
У меня еще один вопрос.
Есть уже две процедуры:

1)create PROCEDURE statistica
@команда char(40)
AS
SELECT distinct @команда as 'Название команды',count(*) as 'Кол-во матчей'
from [dbo].[match]
WHERE Team1=@команда or Team2=@команда

2)create PROCEDURE st1
SELECT distinct @команда as 'Название команды',[Выигр]=COUNT(*)
FROM [dbo].[match]
WHERE score1<>score2 AND (score1>score2 AND Team1=@команда OR score1<score2 AND Team2=@команда)

Как их обьединить в одну что бы при выполнении такой процедуры выводило:

Команда // количество игр // количество выигр

Заранее спасибо!
0
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 9
22.11.2011, 13:33  [ТС] 11
Добрый день!

Какой оператор обьединяет поля с разными условиями в sql?
Ну допустим если у меня есть условие на подсчет количества матчей и условие на подсчет количества побед команды,то как обьединить эти условия в одном запросе,что бы выодило примерно так:
Команда // количество игр // количество выигр

Потому что как я уже заметил union не поможет так как обьединяет записи.

Буду рад за помощь!
0
22.11.2011, 13:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2011, 13:33
Помогаю со студенческими работами здесь

Как определить общее количество выигрышей и ничьих данной команды из массива результатов
1.Одномерный массив: В массиве записаны результаты 20 игр футбольной команды. 1) Если игра...

Определить количество выигрышей, количество проигрышей и количество ничьих данной команды
Недавно начал изучать язык С++ и уже застопорился. Помогите пожалуйста решить. 2.В массиве...

Определить количество выигрышей и количество проигрышей данной команды
Даны 20 пар однозначных чисел. Первое число каждой пары означает количество мячей, забитых...

Определить количество выигрышей заданной команды
Помогите пожалуйста... Пытался по всякому делать, но ничего не получается... Help Me. Дан...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru