полторы простенькие задачки

PlanB
Дата: 01.02.2013 14:10:49
прошу прокомментировать решение первой задачи и помочь с решением второй. сори за школьные приколы, но накосячить низя ну никак :)

1) таблица mytab_1: id, date, account, property, value1, value2.
для значений property = 10 указать value2 для всех account

select a.account, a.value2 from mytab_1 a
where a.property = 10


2) таблица mytab_2: id, account (номер счета), date (время платежа), sum (сумма платежа).

надо вычислить средний временной интервал между платежами за конкретный год. например, за 2012.
PlanB
Дата: 01.02.2013 14:12:04
коммент ко 2 задаче - интересен средний интервал между платежами с каждого account за определенный год.
aleks2
Дата: 01.02.2013 14:17:56
2) таблица mytab_2: id, account (номер счета), date (время платежа), sum (сумма платежа).

средний интервал между платежами =
= сумма по i от 1 до предпоследнего ( date(i) - date(i+1) )/число интервалов =
= ( сумма по i от 1 до предпоследнего (date(i)) - сумма по i от 1 до предпоследнего (date(i+1)) ) /число интервалов =
= ( сумма по i от 1 до предпоследнего (date(i)) - сумма по i от 2 до последнего (date(i)) ) /число интервалов
aleks2
Дата: 01.02.2013 14:19:30
= ( date(1) - date(последнего) ) /число интервалов
PlanB
Дата: 01.02.2013 14:54:49
дык а кодом-то как?
Гость333
Дата: 01.02.2013 15:13:26
PlanB,

select @@version — какой у вас?

Не совсем ясно условие задачи.
Если контрагент сделал один платёж 31.12.2011, а второй платёж — 31.12.2012 (и этот платёж оказался единственным в 2012 году), что должен выдавать запрос?
А если платежи были 31.12.2011, 30.12.2012 и 31.12.2012?
А если за всю историю контрагента был всего один платёж 31.12.2012?
PlanB
Дата: 01.02.2013 15:21:57
Гость333
PlanB,

select @@version — какой у вас?

Не совсем ясно условие задачи.
Если контрагент сделал один платёж 31.12.2011, а второй платёж — 31.12.2012 (и этот платёж оказался единственным в 2012 году), что должен выдавать запрос?
А если платежи были 31.12.2011, 30.12.2012 и 31.12.2012?
А если за всю историю контрагента был всего один платёж 31.12.2012?
в контексте данных задач версия не имеет значение. просто код надо.

относительно Ваших уполне резонных вопросов могу предположить следующее
1. если платеж единственный в году - пустое место/ошибка, что угодно
2. 31.12.2011, 30.12.2012 и 31.12.2012 - длина 1 день по той же логике. берем только год.
думаю, так будет корректено
PlanB
Дата: 01.02.2013 15:23:19
+ select @@version
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) Apr 2 2010 15:53:02 Copyright (c) Microsoft Corporation Express Edition with Advanced Services on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
Гость333
Дата: 01.02.2013 15:25:17
PlanB
в контексте данных задач версия не имеет значение. просто код надо.

Для первой задачи не имеет. Для второй — код может существенно различаться. Например, в SQL Server 2000 не было оконных функций.
Exproment
Дата: 01.02.2013 20:33:04
PlanB
дык а кодом-то как?

через BOL