SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 31.08.2011 10:09:30

Krios
Участник
Зарегистрирован: 31.08.2011
Сообщений: 3

Подсчет уникальных значений

Добрый день .

есть таблица результатов матчей
homekey - порядковый номер команд домашней команды
awaykey - порядковый номер команд  гостевой команды
homescore- количество голов домашней команды
awayscore-количество голов гостевой команды
sezon - номер сезона
id...homekey...awaykey...homescore...awayscore....sezon
1......1..............4..............4................0..............3
2......1..............2..............3................1..............3
3......1..............3............ .2................3..............3
4......5..............1..............4................0..............3
5......8..............1..............0................4..............3
6......9..............1..............3................2..............3

написал запрос вывода только уникальных значений homescore-awascore(разность голов) если homekey =1


SELECT (homescore-awayscore) as QWER, COUNT(*) as rewq FROM result where homekey=1 AND sezon=3   GROUP BY QWER
 

запрос выдаст :
QWER......rewq
-1............1
2..............1
4.............1

можно ли в одном запросе вывести все уникальные значения  для homekey=1 и awaykey=1? или надо будет делать отдельный запрос для awaykey =1 ?
чтобы получился такой вот результат
(homescore-awascore)......... количество
..........4....................................2
.........-1....................................2
.........-4....................................1
.........2......................................1

Отредактированно Krios (31.08.2011 10:17:24)

Неактивен

 

#2 31.08.2011 10:39:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Подсчет уникальных значений

WHERE homekey = 1 OR awaykey = 1?

Если нужно в правильном порядке, то, наверное, через UNION проще:
SELECT homescore - awayscore ... WHERE homekey = 1
UNION
SELECT awayscore - homescore ... WHERE awaykey = 1

Неактивен

 

#3 31.08.2011 11:01:46

Krios
Участник
Зарегистрирован: 31.08.2011
Сообщений: 3

Re: Подсчет уникальных значений

paulus написал:

WHERE homekey = 1 OR awaykey = 1?

Если нужно в правильном порядке, то, наверное, через UNION проще:
SELECT homescore - awayscore ... WHERE homekey = 1
UNION
SELECT awayscore - homescore ... WHERE awaykey = 1

1)WHERE homekey = 1 OR awaykey = 1

выводит
QWER.......rewq
-4.......1
-1.......1
1.......1
2.......1
4.......2

2) а со вторым вариантом можно поподробней?
как полностью составить запрос?

Неактивен

 

#4 31.08.2011 15:38:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Подсчет уникальных значений

Пишете так, как если бы это было два независимых запроса (один ровно тот,
что уже написан, второй — с поменянным условием), а между ними вставляете
UNION ALL.

Неактивен

 

#5 31.08.2011 16:44:06

Krios
Участник
Зарегистрирован: 31.08.2011
Сообщений: 3

Re: Подсчет уникальных значений

paulus написал:

Пишете так, как если бы это было два независимых запроса (один ровно тот,
что уже написан, второй — с поменянным условием), а между ними вставляете
UNION ALL.


сделал
SELECT (homescore-awayscore) as QWER, COUNT(*) as rewq FROM qwerty where homekey=1 AND sezon=3   GROUP BY QWER
UNION ALL
SELECT (awayscore-homescore) as QWER, COUNT(*) as rewq FROM qwerty where awaykey=1 AND sezon=3   GROUP BY QWER
 


вывело

QWER     rewq
-1       1
2       1
4       1
-4       1
-1       1
4       1

а можно ли как-то в этом же запросе сделать чтобы он сразу посчитал -1  всего 2 раза , 4  - 2 раза , 2  - 1 раз , -4  - 1 раз?

Неактивен

 

#6 01.09.2011 00:48:09

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Подсчет уникальных значений

select QWER,sum(rewq) from (
SELECT (homescore-awayscore) as QWER, COUNT(*) as rewq FROM qwerty where homekey=1 AND sezon=3   GROUP BY QWER
UNION ALL
SELECT (awayscore-homescore) as QWER, COUNT(*) as rewq FROM qwerty where awaykey=1 AND sezon=3   GROUP BY QWER
) a group by QWER;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson