Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сложение минимальных значений / 7 сообщений из 7, страница 1 из 1
22.07.2014, 18:07:39
    #38703226
chumaty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложение минимальных значений
Всем доброго времени суток, помогите решить задачу в один вложенный запрос (для каждого типа) дано:

табл1: айди - значение - тип(только А и Б)
123 - 10 - А
123 - 2 - Б
123 - 5 - А
123 - 80 - Б
567 - 1 -А
567 -2 - Б
567 - 10 - Б

таблица 2: айди - дата
123 - 01-01-2014
567 - 02-01-2014

Задача, нужно в определенный промежуток времени (в нашем случае 01-01-2014 и 02-01-2014) найти сумму минимальных значений по каждому айди для каждого типа, в данном случае должно быть:

тип - А; кол-во мин. - 2: айди - 123,567

Спасибо.
...
Рейтинг: 0 / 0
22.07.2014, 20:54:47
    #38703312
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложение минимальных значений
chumatyнайти сумму минимальных значений по каждому айди для каждого типа
chumatyв данном случае должно быть:
тип - А; кол-во мин. - 2: айди - 123,567
И что из этого - сумма?
...
Рейтинг: 0 / 0
22.07.2014, 22:35:23
    #38703365
chumaty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложение минимальных значений
Akinachumatyнайти сумму минимальных значений по каждому айди для каждого типа
chumatyв данном случае должно быть:
тип - А; кол-во мин. - 2: айди - 123,567
И что из этого - сумма?

Возможно не правильно сформулировал, надо найти кол-во минимальных значений (count)
...
Рейтинг: 0 / 0
22.07.2014, 22:39:26
    #38703367
chumaty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложение минимальных значений
chumatyAkinaпропущено...

пропущено...

И что из этого - сумма?

Возможно не правильно сформулировал, надо найти кол-во минимальных значений (count)

Да и еще извиняюсь, пока писал видимо голова совсем не варила.
В результате должно быть (если для Б) то каунт = 1 и айди = 123, а для А соответственно каунт так же = 1 и айди = 567
...
Рейтинг: 0 / 0
23.07.2014, 04:56:18
    #38703442
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложение минимальных значений
chumatyВ результате должно быть (если для Б) то каунт = 1 и айди = 123, а для А соответственно каунт так же = 1 и айди = 567оформите результат таблицей с помощью тега csv или хотя бы fix
ЯННП, каким должен быть результат, особенно с учётом сказанного выше "по каждому айди для каждого типа"
...
Рейтинг: 0 / 0
23.07.2014, 17:31:54
    #38704182
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложение минимальных значений
chumaty , 2 способа решения: традиционный и на переменных - http://sqlfiddle.com/#!2/130c49/1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create table Tabl1 (
    id  int
  , val int
  , typ char(1)
  ,key itv (id,typ,val)
  ,key tvi (typ,val,id)
  );
insert Tabl1 (id,val,typ) values
  (123, 10, 'А'),
  (123,  2, 'Б'),
  (123,  5, 'А'),
  (123, 80, 'Б'),
  (567,  1, 'А'),
  (567,  2, 'Б'),
  (567, 10, 'Б');

create table Tabl2 (
    id int
  , dt datetime
  ,key di (dt,id)
  );
insert Tabl2 (id,dt) values (123,'2014-01-01'),(567,'2014-01-02');


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select g.typ, g.MinVal, count(*) qty, group_concat(c.id) ids
from(
  select a.typ, min(a.val)minVal
  from tabl1 a
  join tabl2 b on b.id=a.id and b.dt between '2014-01-01' and '2014-01-02'
  group by a.typ
  )g
join tabl1 c on c.typ=g.typ and c.val=g.minVal
join tabl2 d on d.id=c.id and d.dt between '2014-01-01' and '2014-01-02'
group by g.typ


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select n.typ, n.val minVal, count(*) qty, group_concat(n.id)ids
from(
  select a.*
    ,@rank:=if(@typ=a.typ,
              if(@val=a.val,1,2),
              if((@val:=a.val)=a.val and (@typ:=a.typ)=a.typ,1,1))rank
  from(
    select t1.typ, t1.val, t1.id
    from Tabl2 t2
    join Tabl1 t1 on t1.id=t2.id
    where t2.dt between '2014-01-01' and '2014-01-02' 
    order by t1.typ, t1.val
    )a, (select @typ:=null,@val:=null, @rank:=null)vars
  )n
where n.rank=1
group by n.typ


TYP MINVAL QTY IDSА 1 1 567Б 2 2 123;567
...
Рейтинг: 0 / 0
23.07.2014, 17:48:22
    #38704196
chumaty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложение минимальных значений
Cygapb-007,

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


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