powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Накопительный итог по диапазону дат
10 сообщений из 10, страница 1 из 1
Накопительный итог по диапазону дат
    #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
Накопительный итог по диапазону дат
    #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
Накопительный итог по диапазону дат
    #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
Накопительный итог по диапазону дат
    #39345393
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miv32 , Скрипт создания и наполнения таблицы (проверенный!) в студию.
...
Рейтинг: 0 / 0
Накопительный итог по диапазону дат
    #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
Накопительный итог по диапазону дат
    #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
Накопительный итог по диапазону дат
    #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
Накопительный итог по диапазону дат
    #39345494
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Круть! :)

Преогромнейшее спасибо. То что надо.
...
Рейтинг: 0 / 0
Накопительный итог по диапазону дат
    #39345520
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну всётаки сумировать с переменными наверно более трезвое решение
...
Рейтинг: 0 / 0
Накопительный итог по диапазону дат
    #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
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Накопительный итог по диапазону дат
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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