Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Накопительный итог по диапазону дат / 10 сообщений из 10, страница 1 из 1
10.11.2016, 20:15
    #39345204
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
Добрый день!

Никак не могу побороть.
Есть табличка с данными (набор документов), в которой есть поле "дата".

Date_doc
01.01.2016
01.01.2016
02.01.2016
04.01.2016
04.01.2016
04.01.2016
04.01.2016

И так далее. Кол-во записей на каждую дату разное.

Надо получить количество строк на выбранную дату.
Т.е. в моем примере на:
01.01.2016 - 2 шт.
02.01.2016 - 3 шт.
03.01.2016 - 3 шт.
04.01.2016 - 7 шт.

Код: sql
1.
2.
3.
4.
5.
SELECT t1.att_val, count(t2.att_val) as total
FROM att_dt as t1 inner join
     att_dt as t2 on t1.att_val >= t2.att_val
WHERE t1.att_val <= str_to_date('11.01.2016','%d.%m.%Y')
GROUP BY  t1.att_val;


Возвращает ерунду

Поискал по форуму - обычно народ суммирует что-то из данных в табличках.
А тут как?
Шаманил с переменными типа sum(@q :=@q + 1). Не помогает.
...
Рейтинг: 0 / 0
11.11.2016, 03:21
    #39345322
Cosmagnetto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
Join непонятный
Код: tsql
1.
2.
3.
4.
5.
6.
Select date, count(*) 
from 
table 
where 
date between d1 and d2
group by date 
order by date desc

Таблиц две или одна?
...
Рейтинг: 0 / 0
11.11.2016, 09:54
    #39345379
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
Табличка одна.

В Вашем селекте идет просто Count(*) по датам, а мне надо именно нарастающее кол-во, т.е. на какую-то дату должен быть
итог за предыдущие.

Вот это
Код: sql
1.
2.
3.
select att_val,count(*) 
from att_dt where att_val < str_to_date('11.01.2016','%d.%m.%Y') and att_real_id = 2
group by att_val



просто группировка. Результат:
att_val" count(*)
2016-01-04" 7
2016-01-05" 4
2016-01-09" 4

А должно быть так:

2016-01-04" 7
2016-01-05" 11
2016-01-09" 15
...
Рейтинг: 0 / 0
11.11.2016, 10:18
    #39345393
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
miv32 , Скрипт создания и наполнения таблицы (проверенный!) в студию.
...
Рейтинг: 0 / 0
11.11.2016, 10:44
    #39345419
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
Код: sql
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
CREATE TABLE att_dt_dop ( `att_val` date );
INSERT INTO att_dt_dop (`att_val`) VALUES
	('2016-01-01'),
	('2016-01-01'),
	('2016-01-01'),
	('2016-01-01'),
	('2016-01-01'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-04'),
	('2016-01-05'),
	('2016-01-05'),
	('2016-01-05'),
	('2016-01-05'),
	('2016-01-05'),
	('2016-01-05'),
	('2016-01-05'),
	('2016-01-05'),
	('2016-01-05'),
	('2016-01-05'),
	('2016-01-06'),
	('2016-01-06'),
	('2016-01-06'),
	('2016-01-07'),
	('2016-01-07'),
	('2016-01-10'),
	('2016-01-10'),
	('2016-01-10'),
	('2016-01-10'),
	('2016-01-10');
...
Рейтинг: 0 / 0
11.11.2016, 12:10
    #39345482
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT t1.att_val, count(t2.att_val) as total
FROM
  ( SELECT t0.att_val, count(t0.att_val) as total
    FROM att_dt_dop as t0
    WHERE t0.att_val <= str_to_date('11.01.2016','%d.%m.%Y')
    GROUP BY  t0.att_val
  ) as t1
  , att_dt_dop t2 
WHERE t1.att_val >= t2.att_val
GROUP BY  t1.att_val;
...
Рейтинг: 0 / 0
11.11.2016, 12:11
    #39345484
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
Пардон, недопричесал... вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT t1.att_val, count(t2.att_val) as total
FROM
  ( SELECT DISTINCT t0.att_val
    FROM att_dt_dop as t0
    WHERE t0.att_val <= str_to_date('11.01.2016','%d.%m.%Y')
  ) as t1
  , att_dt_dop t2 
WHERE t1.att_val >= t2.att_val
GROUP BY  t1.att_val;
...
Рейтинг: 0 / 0
11.11.2016, 12:28
    #39345494
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
Круть! :)

Преогромнейшее спасибо. То что надо.
...
Рейтинг: 0 / 0
11.11.2016, 12:52
    #39345520
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
ну всётаки сумировать с переменными наверно более трезвое решение
...
Рейтинг: 0 / 0
11.11.2016, 12:55
    #39345524
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный итог по диапазону дат
Код: sql
1.
2.
3.
4.
5.
select t.id, @all:=@all +count(*)

from idCap t, (select @all:=0) tt
group by t.id
order by t.id
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Накопительный итог по диапазону дат / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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