powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ROW NUMBER
22 сообщений из 22, страница 1 из 1
ROW NUMBER
    #39577328
Patucho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица с результатами звонков клиентам. Условно (ID INT, DATE_ACTION DATETIME, PhoneNumber INTEGER, ACTION_RESULT NVARCHAR(100))

Как вернуть только те ID где было три попытки набора в три разных дня?
Заранее спасибо!
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577329
Patucho,

а почему row_number? а не COUNT() ?
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577330
Patucho,

а почему row_number? а не COUNT() ?
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577333
Patucho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я подумал, что это нужно делать с помощью ROW_NUMBER. Но рассмотрю все варианты)
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577334
Patucho,

привет данных приведи, и результат на них... чтобы было на чем решения показывать...
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577337
Добрый Э - ЭхPatucho,

привет мер данных приведи, и результат на них... чтобы было на чем решения показывать...
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577338
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - ЭхPatucho,
а почему row_number? а не COUNT() ?
Потому что COUNT DISTINCT :)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
WITH
t0 ( [id], [date] ) AS (
  SELECT 1, CONVERT( DATETIME, '2017-12-01T09:00:00' ) UNION ALL
  SELECT 2, CONVERT( DATETIME, '2017-12-01T09:10:00' ) UNION ALL
  SELECT 2, CONVERT( DATETIME, '2017-12-01T09:30:00' ) UNION ALL
  SELECT 1, CONVERT( DATETIME, '2017-12-02T09:00:00' ) UNION ALL
  SELECT 2, CONVERT( DATETIME, '2017-12-02T09:10:00' ) UNION ALL
  SELECT 2, CONVERT( DATETIME, '2017-12-02T09:30:00' ) UNION ALL
  SELECT 2, CONVERT( DATETIME, '2017-12-03T09:10:00' ) UNION ALL
  SELECT 2, CONVERT( DATETIME, '2017-12-03T09:30:00' )
)
SELECT
  [id]
FROM
  t0
GROUP BY
  [id]
HAVING
  COUNT( DISTINCT CONVERT( DATE, [date] ) ) >= 3
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577340
Patucho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

SELECT TOP 20
ID
,LID 'Кому звонили'
,Created 'Дата действия'
,TypeID 'Результат'
FROM dbo.history
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577341
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PatuchoЕсть таблица с результатами звонков клиентам. Условно (ID INT, DATE_ACTION DATETIME, PhoneNumber INTEGER, ACTION_RESULT NVARCHAR(100))это ID уникально в таблице?
может ли быть несколько записей по одному PhoneNumber в один день?
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577343
Patucho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дедушка,

ID - инкремент
может быть несколько записей по одному PhoneNumber в один день

Но нужно три записи в три разных дня
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577348
Patucho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дедушка,

я пробую вот так:

SELECT h.ID,h.LID, CAST(h.Created AS DATE)
,ROW_NUMBER() OVER (PARTITION BY h.LID, CAST(h.Created AS DATE) ORDER BY h.LID)
FROM dbo.history h (NOLOCK)
WHERE h.Created > GETDATE()-4

но, оно так нумерует те, по которым было действие в один день
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577351
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PatuchoКак вернуть только те ID где было три попытки набора в три разных дня?если ID уникально, то какие именно ID вы хотите получить:
- все ID для этого PhoneNumber по которому было 3 попытки или?
- ID конкретно этих "третьих" попыток?

вдогонку, именно 3 попытки или 3 и более?
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577352
Patucho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дедушка,

Прошу прощения, неправильно поставил вопрос. Нужны все LID по которым было попыток набора >= 3 в три разных дня
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577358
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577362
Patucho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Руслан Дамирович, если честно, я не понимаю Ваш запрос
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577370
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PatuchoДедушка,

ID - инкремент
может быть несколько записей по одному PhoneNumber в один день

Но нужно три записи в три разных дняВсего три звонка по одному номеру или три звонка в разные дни и, возможно, ещё какие-то звонки в какие-то дни?
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577378
Patucho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,

есть столбец "LID" (кому звонили), нужно три попытки набора на один LID в три разных дня. На любой номер
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577399
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Patuchoiap,

есть столбец "LID" (кому звонили), нужно три попытки набора на один LID в три разных дня. На любой номер
Код: sql
1.
2.
SELECT * FROM T WHERE T.LID IN
(SELECT TT.LID FROM T TT GROUP BY TT.LID HAVING COUNT(DISTINCT CAST(TT.Created AS DATE))>=3)
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577400
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapPatuchoiap,

есть столбец "LID" (кому звонили), нужно три попытки набора на один LID в три разных дня. На любой номер
Код: sql
1.
2.
SELECT * FROM T WHERE T.LID IN
(SELECT TT.LID FROM T TT GROUP BY TT.LID HAVING COUNT(DISTINCT CAST(TT.Created AS DATE))>=3)

А вообще-то, это уже писали выше: 21069366
Разве что тут выводятся все поля, а не только LID
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577407
Patucho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,

Я уже сделал.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
IF OBJECT_ID(N'tempdb..#1') IS NOT NULL DROP TABLE #1 
SELECT DISTINCT l.ID, CAST(h.Created AS DATE) 'Created'
INTO #1
FROM dbo.loans l (NOLOCK)
LEFT JOIN dbo.history h (NOLOCK) ON h.LID = l.ID
WHERE h.Created >= dbo.FirstMD(GETDATE())
AND l.PID IN (325,326,331,340,341,349,359)

IF OBJECT_ID(N'tempdb..#2') IS NOT NULL DROP TABLE #2
SELECT a.ID LID
		,a.Created
		,ROW_NUMBER() OVER (PARTITION BY a.ID ORDER BY a.Created) row
INTO #2
FROM #1 a
GROUP BY a.ID, a.Created

IF OBJECT_ID(N'tempdb..#action') IS NOT NULL DROP TABLE #action
SELECT DISTINCT s.LID
INTO #action
FROM #2 s 
WHERE s.row >= 3
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577436
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IF OBJECT_ID(N'tempdb..#1') IS NOT NULL DROP TABLE #1

как это в многопользовательской среде отработает?
...
Рейтинг: 0 / 0
ROW NUMBER
    #39577439
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
waszkiewiczIF OBJECT_ID(N'tempdb..#1') IS NOT NULL DROP TABLE #1
как это в многопользовательской среде отработает?
Нормально отработает. Это сессионные времянки.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ROW NUMBER
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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