powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / запрос к таблице(count, sum)
13 сообщений из 13, страница 1 из 1
запрос к таблице(count, sum)
    #39826983
qrp18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет!

у меня есть такая таблица:
авторcreate table main (x date, y int, z char);
insert into main values('20190301', 3, 'c');
insert into main values('20190310', 7, 'a');
insert into main values('20190320', 9, 'a');
insert into main values('20190402', 11, 'a');
insert into main values('20190411', 4, 'a');
insert into main values('20190411', 5, 'a');
insert into main values('20190415', 5, 'b');
insert into main values('20190421', 9, 'a');
insert into main values('20190421', 10, 'b');
insert into main values('20190421', 5, 'a');
insert into main values('20190428', 15, 'a');
insert into main values('20190501', 7, 'b');

select x,y,z from main;


есть к ней параметры на вход: две даты(20190401, 20190430) и значение 'a'
по этим параметрам хотелось бы написать селект к таблице, который бы вывел по выборке:
1. количество дней, по которым есть записи(параметр x): 4
2. количество записей: 8
3. сумму параметра z по всем записям: 65
4. последний день, в который есть запись(параметр x): '20190428'

p.s. задача выглядит просто, но я не совсем понимаю, эта задача сложная или простая(в случае, если сложная, не знаю, насколько правильно ее сюда выкладывать и просить её решить), но сам с ней сижу сегодня полдня, у меня не получается пока ее сделать.
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39826985
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qrp181. количество дней, по которым есть записи(параметр x): 4
2. количество записей: 8
3. сумму параметра z по всем записям: 65
4. последний день, в который есть запись(параметр x): '20190428'



ну вы сформулируйте условие выборки то и сразу будет понятнее
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39826987
qrp18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza,
sorry, похоже, криво написал.
условие выборки:
main.x >= '20190401'
main.x <= '20190430'
main.z = 'a'
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39826989
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и что мешает прикрутить

qrp181. количество дней, по которым есть записи(параметр x): 4
2. количество записей: 8
3. сумму параметра z по всем записям: 65
4. последний день, в который есть запись(параметр x): '20190428'

количество уникальных x
количество x
сумму z
максимальный x
?
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39826990
qrp18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza,

именно так
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39826993
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И?

Задача - простая. Просить решить - странно. Если пока не получается, то читайте синтаксис операторов, которые выполняют ваши задачи, синтаксис запросов в целом если не понятно куда условия, а куда что писать. Смотрите примеры, в частности агрегатных функций.
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39826994
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://rextester.com/MLNZ29756

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare @st date ='20190401'
declare @en date ='20190430'
declare @z char = 'a'
declare @t table (x date, y int, z char)
insert into @t(x,y,z) values
('20190301', 3, 'c'),
('20190310', 7, 'a'),
('20190320', 9, 'a'),
('20190402', 11, 'a'),
('20190411', 4, 'a'),
('20190411', 5, 'a'),
('20190415', 5, 'b'),
('20190421', 9, 'a'),
('20190421', 10, 'b'),
('20190421', 5, 'a'),
('20190428', 15, 'a'),
('20190501', 7, 'b')
select count(1)n,max(x)mx,sum(y)sm,sum(case z when @z then 1 end)pr
from @t where x>=@st and x<=@en
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39826995
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пропустил count(distinct x)m..
https://rextester.com/KKVC19161
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare @st date ='20190401'
declare @en date ='20190430'
declare @z char = 'a'
declare @t table (x date, y int, z char)
insert into @t(x,y,z) values
('20190301', 3, 'c'),
('20190310', 7, 'a'),
('20190320', 9, 'a'),
('20190402', 11, 'a'),
('20190411', 4, 'a'),
('20190411', 5, 'a'),
('20190415', 5, 'b'),
('20190421', 9, 'a'),
('20190421', 10, 'b'),
('20190421', 5, 'a'),
('20190428', 15, 'a'),
('20190501', 7, 'b')
select count(distinct x)m,count(1)n,max(x)mx,sum(y)sm,sum(case z when @z then 1 end)pr
from @t where x>=@st and x<=@en
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39826997
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или ..count(distinct case z when @z then x end)ff .. в зависимости от условий если нужно считать даты только с 'a'
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39827006
qrp18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkivну или ..count(distinct case z when @z then x end)ff .. в зависимости от условий если нужно считать даты только с 'a'

спасибо, то что надо :)

а если параметр 'a' задается в виде таблицы
авторdeclare @tz table (z char)
insert into @tz(z) values
('a'),
('b')

, то как правильно написать условие можете сказать?
или в таком случае все будет совсем по другому, т.к. надо будет к этой таблице джоином присоединять первую таблицу?
(на выходе тогда первым значением пойдет значение параметра 'z')
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39827007
qrp18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza,

позиция понятна, но по поводу простоты я спросил к другому.
> простую задачу, решение которой занимает мало времени, попросить помочь решить не зазорно
> сложную задачу, решение которой у специалистов занимает много часов, или даже дней просить сделать за тебя некрасиво.

поэтому, если задача специалистом видится несложной, то я ок.
сам над ней думал, не решил.. бывает. но я и не специалист.. спустя полгода-год может быть стану.
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39827023
qrp18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkiv,

покрутил, вроде так получается: https://rextester.com/QUKW5505
вроде, то что хотел.
спасибо еще раз
...
Рейтинг: 0 / 0
запрос к таблице(count, sum)
    #39827027
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неявные преобразования - отстой
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / запрос к таблице(count, sum)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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