Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
2 / 2 / 1
Регистрация: 29.10.2014
Сообщений: 25

Создание запросов в MS SQL

05.05.2015, 11:16. Показов 2328. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Привет. Помогите, пож-та усовершенствовать запрос. (исключить повторения.)
есть таблица Taksit

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
CREATE TABLE [Taksit] (
    [IDRef]  INT  IDENTITY (1, 1) NOT NULL,
    [Period] DATE NULL,
    [TaksitMonth] INT      NULL,
    [SumSales] NUMERIC(10,2) NULL,
    PRIMARY KEY CLUSTERED ([IDRef] ASC)
)
 
INSERT INTO [Taksit]([Period], [TaksitMonth], [SumSales])
VALUES
('2015-01-01', 3, 20.2),
('2015-01-01', 6, 309.32),
('2015-01-01', 3, 101.84),
('2015-01-01', 3, 285.14),
('2015-01-01', 1, 130.41),
('2015-01-01', 9, 843.23),
('2015-01-02', 1, 75.98),
('2015-01-03', 6, 98.36),
('2015-01-03', 6, 156.78),
('2015-01-03', 6, 185.1),
('2015-01-03', 3, 58.4),
('2015-01-03', 6, 158.7),
('2015-01-03', 3, 72.98),
('2015-01-04', 1, 7.9),
('2015-01-04', 9, 873.19),
('2015-01-04', 12, 1983.99),
('2015-01-05', 1, 74.2),
('2015-01-05', 3, 12.98),
('2015-01-05', 3, 245.9),
('2015-01-05', 3, 120.7),
('2015-01-05', 6, 77.77),
('2015-01-05', 6, 254.11),
('2015-01-05', 16, 983.22),
('2015-01-05', 1, 125.99),
('2015-01-05', 20, 938.91),
('2015-01-06', 24, 125.99)
нужно определить общую сумму продаж sumsales за каждый такситный месяц taksitmonth

вот запрос с повторениями.
SQL
1
2
3
4
SELECT taksitmonth,
    SUM(sumsales) OVER (partition BY taksitmonth) 
    AS sumsales
  FROM [DATABASE].[dbo].[Taksit]
пробовала исключить так:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
SELECT taksitmonth,
    SUM(sumsales) OVER (partition BY taksitmonth) 
    AS sumsales,
    ROW_NUMBER() OVER (partition BY taksitmonth ORDER BY taksitmonth) AS rnk
  FROM [DATABASE].[dbo].[Taksit];
  WITH cte
  AS 
 (SELECT taksitmonth, ROW_NUMBER() OVER (partition BY taksitmonth ORDER BY taksitmonth) AS rnk
   FROM [DATABASE].[dbo].[taksit]
   )
   DELETE FROM cte 
   WHERE rnk>1
но выдает не совсем то, что нужно...и при этом удаляет данные из таблицы.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2015, 11:16
Ответы с готовыми решениями:

Создание запросов на SQL
Помогите с запросами! Найти такие рейсы, на которых используется только один тип автобуса. Для указанного рейса показать время и...

Создание запросов на языке SQL
http://dl2.joxi.net/drive/0001/1288/95496/141125/cb65f86f81.png 1. Посчитать количество товаров, которые отгружались хотя бы раз на...

Создание запросов баз данных в MS SQL Server
КТО МОЖЕТ ПОЖАЛУЙСТА ПОМОГИТЕ СДЕЛАТЬ ЛАБУ. Создание запросов в SQL Вариант № 7 — База данных видео проката 1.Сотрудники (Код...

9
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
05.05.2015, 11:38
Лучший ответ Сообщение было отмечено Metall_Version как решение

Решение

T-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
;with cte ([Date],[val]) as
(
select '2015-01-01', 20.2
union all
select '2015-01-01', 309.32
union all
select '2015-01-01',101.84
union all
select '2015-01-01', 285.14
union all
select '2015-01-01',130.41
union all
select '2015-01-01', 843.23
union all
select '2015-02-02', 75.98
union all
select '2015-02-03', 98.36
union all
select '2015-03-03', 156.78
union all
select '2015-03-03', 185.1
)
select SUM(val),Month([DATE]) 
from cte
group by MONTH([Date])
0
2 / 2 / 1
Регистрация: 29.10.2014
Сообщений: 25
05.05.2015, 11:45  [ТС]
Все равно есть те же повторения...
0
 Аватар для Ice_and_Fire
512 / 298 / 37
Регистрация: 22.06.2011
Сообщений: 929
05.05.2015, 11:52
Может я чего не понял..но distinct уже не в моде?
T-SQL
1
2
3
4
SELECT DISTINCT taksitmonth,
    SUM(sumsales) OVER (partition BY taksitmonth) 
    AS sumsales
  FROM [Taksit][quote="Lelik_;7571218"]...и при этом удаляет данные из таблицы[/quote]
и при этом удаляет данные из таблицы
cte не отдельный объект. Он разворачивается. Все что делаешь с cte делаешь и с таблицей
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
05.05.2015, 12:04
Цитата Сообщение от Lelik_ Посмотреть сообщение
Все равно есть те же повторения...

где?
(No column name) (No column name)
1690.14 1
174.34 2
341.88 3
0
2 / 2 / 1
Регистрация: 29.10.2014
Сообщений: 25
05.05.2015, 12:04  [ТС]
Про distinct забыла)) спасибо)
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
05.05.2015, 12:06
дык ёлы-палы. Изучаем предложение GROUP BY
0
2 / 2 / 1
Регистрация: 29.10.2014
Сообщений: 25
05.05.2015, 12:09  [ТС]
ребята, пож-та. еще с этим запросом. очень нужно.
есть таблица Sales
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
CREATE TABLE [Sales] (
    [IDRef]  INT  IDENTITY (1, 1) NOT NULL,
    [DimEmployee] INT NULL,
    [SumSales] NUMERIC(10,2) NULL,
    [Quantity] INT      NULL,
    PRIMARY KEY CLUSTERED ([IDRef] ASC)
)
 
INSERT INTO [Sales]([DimEmployee], [SumSales], [Quantity])
VALUES
(1, 20.2, 2),
(1, 50.5, 1),
(1, 44.3, 3),
(1, 234.54, 1),
(1, 20.98, 3),
(1, 37.65, 1),
(1, 135.2, 3),
(2, 34.6, 1),
(2, 38.52, 3),
(2, 83.28, 3),
(3, 50.53, 1),
(3, 84.82, 5),
(3, 294.6, 1),
(3, 183.56, 1),
(3, 122.32, 6),
(3, 98.09, 1),
(3, 283.98, 1),
(3, 45.41, 5),
(3, 72.4, 1),
(3, 98.98, 3),
(3, 45.4, 3),
(3, 185.42, 2)
и таблица DimEmployee
SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE [DimEmployee] (
    [IDRef]      INT           IDENTITY (1, 1) NOT NULL,
    [LastName]       NVARCHAR (50) NULL,
    [FirstName]      NVARCHAR (50) NULL,
    [EnrollmentDate] DATETIME      NULL,
    PRIMARY KEY CLUSTERED ([IDRef] ASC)
)
INSERT INTO [DimEmployee] ([LastName], [FirstName], [EnrollmentDate] )
VALUES
( 'Semenova', 'Viktoriya', '2013-09-01'), 
( 'Hrustaleva', 'Kseniya', '2012-01-13'), 
('Ivanova', 'Mariya', '2011-09-03')
Здесь необходимо заменить сумму продаж (SumSales) на 200.2 и количество продаж на 8 только у тех сотрудников, которые пришли в 2011 году и у которых сумма продаж больше 150.
0
05.05.2015, 12:18

Не по теме:


попахивает. от руководства не влетит?

0
2 / 2 / 1
Регистрация: 29.10.2014
Сообщений: 25
05.05.2015, 18:44  [ТС]
SQL
1
2
3
4
5
UPDATE [DATABASE].[dbo].Sales
SET sumsales='200.2', Quantity=8
FROM [DATABASE].[dbo].Sales, [DATABASE].[dbo].DimEmployee
WHERE sumsales>150
AND YEAR(enrollmentdate)=2011
Но обрабатывается два сотрудника разных дат, из-за того, что у них sumsales>150..как сделать так,что условие работало?( должен быть один сотрудник...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.05.2015, 18:44
Помогаю со студенческими работами здесь

Создание sql-запросов
Доброго времени суток. Есть таблица производителей MF_ID, MF_NAME

Создание перекрестных запросов в SQL и решение практических задач выборки
Пишу курсовую по базам данных, тема следующая: "Создание перекрестных запросов в SQL и решение практических задач выборки". С первой...

Создание БД из SQL-запросов
Всем доброго времени суток! Стоит задача: Предметная область: “Научная конференция”. Выполняемые процедуры: • учет состава...

Создание запросов в SQL
Всем доброго времени суток, нужно создать 3 запроса к нижеприведённой БД: 1 Отчет Материально Ответственного лица по датам ( с...

Создание SQL-запросов в Delphi XE4
Добрый день. Есть очень простой вопрос. Я работал в Delphi 7, а сейчас в Delphi XE4. Создал БД в Access, создал запрос на добавление в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru