Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос для MySQL таблички / 10 сообщений из 10, страница 1 из 1
21.03.2016, 21:00
    #39197491
b0bah
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create table `results` (
  `id` int(11) not null auto_increment,
  `name` varchar(255),
  `result` varchar(255),
  `count` int(11)
);

insert into `results` (`name`, `result`, `count`) values
('first', 'inprocess', 10),
('first', 'finish', 24),
('first', 'error', 1),
('second', 'inprocess', 7),
('second', 'finish', 12),
('second', 'error', 2),
('other', 'inprocess', 4),
('other', 'finish', 5),
('sss', 'inprocess', 4);



Result возможно будет set('inprocess', 'error', 'finish')
Помогите составить запрос для MySQL, что бы на выходе получилась следующая таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
-------------------------------
| name |finish|error|inprocess|
|------+------+-----+---------|
|first |24    |1    |10       |
|second|12    |2    |7        |
|other |5     |2    |0        |
|sss   |0     |0    |4        |
-------------------------------
...
Рейтинг: 0 / 0
21.03.2016, 21:06
    #39197492
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
b0bah,

Код: sql
1.
2.
3.
4.
5.
6.
7.
select 
  name,
  sum(count*('finish'=result)) as finish,
  sum(count*('error'=result)) as error,
  sum(count*('inprocess'=result)) as inprocess
from results
group by name
...
Рейтинг: 0 / 0
22.03.2016, 10:51
    #39197758
b0bah
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
Я прошу прощения, вчера немного напутал ;-D
если нужно посчитать количество `result` для каждого `name`, т.е. нет колонки `count`

create table `results` (
`id` int(11) not null auto_increment,
`name` varchar(255),
`result` varchar(255),
);

insert into `results` (`name`, `result`, `count`) values
('first', 'inprocess'),
('first', 'inprocess'),
('first', 'finish'),
('first', 'finish'),
('first', 'finish'),
('first', 'finish'),
('first', 'inprocess'),
('first', 'error'),
('second', 'inprocess'),
('second', 'finish'),
('second', 'finish'),
('second', 'error'),
('other', 'inprocess'),
('other', 'finish'),
('other', 'finish'),
('other', 'finish'),
('sss', 'inprocess'),
('sss', 'inprocess'),
('sss', 'inprocess');
...
Рейтинг: 0 / 0
22.03.2016, 11:21
    #39197792
b0bah
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
Получилось что то вроде этого:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
 `name_board`,
 sum(`cnt`*('finishOk'=`result`)) as `ok`,
 sum(`cnt`*('finishError'=`result`)) as `error`,
 sum(`cnt`*('inprocess'=`result`)) as `process`
FROM
 (SELECT
  `name_board`, `result`, count(`result`) as `cnt`
 FROM `board_result`
 GROUP BY `name_board`, `result`) AS `res`
GROUP BY `name_board`
...
Рейтинг: 0 / 0
22.03.2016, 11:24
    #39197794
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
b0bah,

ну и убери "count*" из запроса...
...
Рейтинг: 0 / 0
22.03.2016, 11:25
    #39197796
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
tanglir,

или тебе количество разных результатов надо посчитать? так для этого есть count(distinct result)
...
Рейтинг: 0 / 0
22.03.2016, 12:21
    #39197843
b0bah
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
Нужно из таблицы
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
create table `results` (
`id` int(11) not null auto_increment,
`name` varchar(255),
`result` varchar(255),
);

insert into `results` (`name`, `result`, `count`) values
('first', 'inprocess'),
('first', 'inprocess'),
('first', 'finish'),
('first', 'finish'),
('first', 'finish'),
('first', 'finish'),
('first', 'inprocess'),
('first', 'error'),
('second', 'inprocess'),
('second', 'finish'),
('second', 'finish'),
('second', 'error'),
('other', 'inprocess'),
('other', 'finish'),
('other', 'finish'),
('other', 'finish'),
('sss', 'inprocess'),
('sss', 'inprocess'),
('sss', 'inprocess'); 


получить:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
-------------------------------
| name |finish|error|inprocess|
|------+------+-----+---------|
|first |4     |1    |3        |
|second|2     |1    |2        |
|other |1     |0    |1        |
|sss   |0     |0    |3        |
-------------------------------

Пока я нашел как это сделать с помощью вложенного запроса:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT `name` , sum( `cnt` * ( 'finish' = `result` ) ) , sum( `cnt` * ( 'error' = `result` ) ) , sum( `cnt` * ( 'inprocess' = `result` ) ) 
FROM (
SELECT `name` , `result` , count( `result` ) AS `cnt`
FROM `results`
GROUP BY `name` , `result`
) AS `res`
GROUP BY `name`


Если есть другой более правильный вариант, то хотелось бы его увидеть.
...
Рейтинг: 0 / 0
22.03.2016, 12:41
    #39197870
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
ответ же дан - 18960895 зачем вы все усложняете
...
Рейтинг: 0 / 0
22.03.2016, 12:48
    #39197879
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT 
  `name`
, sum('finish'=`result`) as `ok`
, sum('error'=`result`) as `error`
, sum('inprocess'=`result`) as `process`
FROM `results`
GROUP BY `name`;
...
Рейтинг: 0 / 0
22.03.2016, 12:52
    #39197887
b0bah
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос для MySQL таблички
Akina,

Благодарю.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос для MySQL таблички / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]