powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка по двум диапазонам дат
11 сообщений из 11, страница 1 из 1
Выборка по двум диапазонам дат
    #38929757
nickolay_fff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток! Помогите пожалуйста с группировкой:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE IF NOT EXISTS `codclient` (
  `id_codclient` varchar(11) NOT NULL,
  `codclientname` varchar(70) NOT NULL,
  `id_codcat` int(4) NOT NULL,
  `regdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `reg_dept` int(4) NOT NULL,
  UNIQUE KEY `id_codclient` (`id_codclient`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
INSERT INTO `codclient` (`id_codclient`, `codclientname`, `id_codcat`, `regdate`, `reg_dept`) VALUES
('000001', '000001', 1, '2014-04-06 17:27:19', 58),
('000002', '000002', 2, '2015-04-07 10:07:57', 58),
('000003', '000003', 9, '2015-04-07 10:45:35', 58),
('000004', '000004', 2, '2015-04-07 10:47:48', 58),
('000005', '000005', 2, '2015-04-07 10:49:21', 58),
('000006', '000006', 1, '2015-04-07 10:50:27', 58),
('000007', '000007', 1, '2015-04-07 10:51:10', 58),
('000008', '000008', 1, '2015-04-07 10:59:53', 58),
('000009', '000009', 1, '2015-04-07 11:03:26', 58),
('000010', '000010', 1, '2015-04-07 11:04:25', 58);



Необходимо получить:
id_codcat20142015115203300400500600700800901
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38929821
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SUM(datepart(YEAR,regdate)=2014)
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38930015
AlexSes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
datepart() MSSQL, не?
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38930068
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну не datepart, так extract . Нашёл проблему...
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38930577
nickolay_fff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT `codcat`.`id_codcat`, `codcat`.`codcat`,
			  sum(case when YEAR(`regdate`)='2014' then 1 else '' end) as '2014'
                          sum(case when YEAR(`regdate`)='2015' then 1 else '' end) as '2015'	
	    FROM `codcat` 
			  LEFT JOIN `codclient` on `codcat`.`id_codcat`=`codclient`.`id_codcat`  
			  and `reg_dept`='58'
			  group by `codcat`.`id_codcat`
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38930733
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну зафигом тебе там CASE? чтобы сервер лишний раз напрасно попыхтел, проверяя условие и преобразуя типы?
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38931082
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaНу зафигом тебе там CASE? чтобы сервер лишний раз напрасно попыхтел, проверяя условие и преобразуя типы?
case в таком исполнении равносилен по быстродействию с if.
проверил как-то на таблице в 28000 строк.
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38931130
nickolay_fff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
больше ничего на ум не пришло пока, поэтому case...
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38931131
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
If тут тоже нахрен не нужен. Причём с той же мотивацией.
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38931132
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nickolay_fff, а теперь ВНИМАТЕЛЬНО посмотри на то, что написал я...
...
Рейтинг: 0 / 0
Выборка по двум диапазонам дат
    #38931477
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirНу не datepart, так extract . Нашёл проблему...

:) таки да, для профессионалов проблемы - эффективные алгоритмы и оптимальные структуры данных... а тонкости каждого языка... для этого есть проверка синтаксиса и клавиша backspace

К слову . в мускле

вместо datepart(YEAR|MONTH|DAY|...etc, value-date-time)

YEAR(value-date-time)
MONTH(value-date-time)
DAY(value-date-time)
etc
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка по двум диапазонам дат
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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