powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос для MySQL таблички
10 сообщений из 10, страница 1 из 1
Помогите составить запрос для MySQL таблички
    #39197491
b0bah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Помогите составить запрос для MySQL таблички
    #39197492
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите составить запрос для MySQL таблички
    #39197758
b0bah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я прошу прощения, вчера немного напутал ;-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
Помогите составить запрос для MySQL таблички
    #39197792
b0bah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось что то вроде этого:
Код: 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
Помогите составить запрос для MySQL таблички
    #39197794
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0bah,

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

или тебе количество разных результатов надо посчитать? так для этого есть count(distinct result)
...
Рейтинг: 0 / 0
Помогите составить запрос для MySQL таблички
    #39197843
b0bah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно из таблицы
Код: 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
Помогите составить запрос для MySQL таблички
    #39197870
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ответ же дан - 18960895 зачем вы все усложняете
...
Рейтинг: 0 / 0
Помогите составить запрос для MySQL таблички
    #39197879
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Помогите составить запрос для MySQL таблички
    #39197887
b0bah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

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


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