Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Подсчет повторяющихся значений sql  [new]
areweweare
Member

Откуда:
Сообщений: 2
Здравствуйте!
Есть 2 таблицы ( для краткости напишу только необходимые столбцы из них):
Группа ( id_группы, код_группы) и Сессия (id_группы, дата_экзамена)

Нужно определить, не сдает ли какая-либо группа два экзамена в один день.

В результате должен быть выведен код группы, дата_экзамена, когда у группы несколько экзаменов
24 ноя 13, 22:54    [15182551]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
areweweare
Здравствуйте!
Есть 2 таблицы ( для краткости напишу только необходимые столбцы из них):
Группа ( id_группы, код_группы) и Сессия (id_группы, дата_экзамена)

Нужно определить, не сдает ли какая-либо группа два экзамена в один день.

В результате должен быть выведен код группы, дата_экзамена, когда у группы несколько экзаменов

И где ваш первоначальный запрос? Сделайте join по id_группы, count по дата_экзамена
24 ноя 13, 23:15    [15182636]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
areweweare
Member

Откуда:
Сообщений: 2
Получилось вот так вот, можно ли это как то компактнее/проще сделать?

SELECT COUNT(exam_date) as 'колво экзаменов в день', exam_date,groupp_kod
FROM (SELECT exam_date,groupp_kod from ses inner join grouppa on(ses.groupp_id = grouppa.groupp_id))t1
group by groupp_kod,exam_date
HAVING COUNT(exam_date)>1
24 ноя 13, 23:49    [15182776]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
areweweare,
select s.exam_date,g.groupp_kod,count(s.exam_date) as 'колво экзаменов в день'
from ses s join grouppa g on s.groupp_id = g.groupp_id
group by s.exam_date,g.groupp_kod
having count(s.exam_date)>1
25 ноя 13, 00:04    [15182812]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
aleks2
Guest
areweweare
Получилось вот так вот, можно ли это как то компактнее/проще сделать?

SELECT COUNT(exam_date) as 'колво экзаменов в день', exam_date,groupp_kod
FROM (SELECT exam_date,groupp_kod from ses inner join grouppa on(ses.groupp_id = grouppa.groupp_id))t1
group by groupp_kod,exam_date
HAVING COUNT(exam_date)>1


sdet
areweweare,
select s.exam_date,g.groupp_kod,count(s.exam_date) as 'колво экзаменов в день'
from ses s join grouppa g on s.groupp_id = g.groupp_id
group by s.exam_date,g.groupp_kod
having count(s.exam_date)>1


Ужос. Садись - неуд.

Такие вещи не допускаются ограничением уникальности
CREATE UNIQUE INDEX on Сессия (id_группы, дата_экзамена)
25 ноя 13, 07:32    [15183260]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
aleks2
areweweare
Получилось вот так вот, можно ли это как то компактнее/проще сделать?

SELECT COUNT(exam_date) as 'колво экзаменов в день', exam_date,groupp_kod
FROM (SELECT exam_date,groupp_kod from ses inner join grouppa on(ses.groupp_id = grouppa.groupp_id))t1
group by groupp_kod,exam_date
HAVING COUNT(exam_date)>1


sdet
areweweare,
select s.exam_date,g.groupp_kod,count(s.exam_date) as 'колво экзаменов в день'
from ses s join grouppa g on s.groupp_id = g.groupp_id
group by s.exam_date,g.groupp_kod
having count(s.exam_date)>1


Ужос. Садись - неуд.

Такие вещи не допускаются ограничением уникальности
CREATE UNIQUE INDEX on Сессия (id_группы, дата_экзамена)

И где ж твой запрос под бизнес требования?
25 ноя 13, 11:29    [15184152]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
aleks2
Guest
sdet
aleks2
пропущено...


пропущено...


Ужос. Садись - неуд.

Такие вещи не допускаются ограничением уникальности
CREATE UNIQUE INDEX on Сессия (id_группы, дата_экзамена)

И где ж твой запрос под бизнес требования?


Я дурацкие "бизнес-требования" не склонен исполнять.
Но даже случае безысходности, делать группировку глупо.
25 ноя 13, 12:43    [15184638]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
aleks2
sdet
пропущено...

И где ж твой запрос под бизнес требования?


Я дурацкие "бизнес-требования" не склонен исполнять.
Но даже случае безысходности, делать группировку глупо.

Дурацкие они для тебя, а для группы имеющей несколько экзаменов в день они не дурацкие.
Поэтому не надо своей дуростью преобразовывать требования.
25 ноя 13, 17:04    [15186795]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
aleks2
sdet
пропущено...

И где ж твой запрос под бизнес требования?


Но даже случае безысходности, делать группировку глупо.

Поскольку версия сервера не указана,
предложи другой запрос, который будет работать и на старых версиях тоже
25 ноя 13, 18:07    [15187187]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
sdet
Поскольку версия сервера не указана,
предложи другой запрос, который будет работать и на старых версиях тоже

Про exists слыхали ?
25 ноя 13, 18:14    [15187229]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
Glory,
Предложите топиккастеру другой запрос
25 ноя 13, 18:18    [15187254]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
sdet
Glory,
Предложите топиккастеру другой запрос

Да ну нафиг, у него бизнесс диктует, что можно в базе использовать, что нельзя

ЗЫ
Хотя скорее всего этот "бизнесс" есть преподаватель
25 ноя 13, 18:20    [15187269]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
Glory
sdet
Glory,
Предложите топиккастеру другой запрос

Да ну нафиг, у него бизнесс диктует, что можно в базе использовать, что нельзя

ЗЫ
Хотя скорее всего этот "бизнесс" есть преподаватель

А что, по-вашему, группа не может иметь 2 экзамена в 1 день? Тем более, группа может разделиться. Часть группы сдает один экзамен, часть другой в один день. Это используется реально в учебных заведениях.
25 ноя 13, 18:39    [15187389]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
sdet
А что, по-вашему, группа не может иметь 2 экзамена в 1 день? Тем более, группа может разделиться. Часть группы сдает один экзамен, часть другой в один день. Это используется реально в учебных заведениях.

А причем тут это ?
Вы же настаивали на том, что дескать бизнесс запретил решать задачу через констрайнт, а требует решать ее через группировку. Вдруг ваш бизнесс что-то и против [not] exists имеет
25 ноя 13, 21:19    [15188016]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
Glory
sdet
А что, по-вашему, группа не может иметь 2 экзамена в 1 день? Тем более, группа может разделиться. Часть группы сдает один экзамен, часть другой в один день. Это используется реально в учебных заведениях.

А причем тут это ?
Вы же настаивали на том, что дескать бизнесс запретил решать задачу через констрайнт, а требует решать ее через группировку. Вдруг ваш бизнесс что-то и против [not] exists имеет

А при том, что вы отказались топикастеру предложить свое решение сославшись на (у него бизнесс диктует, что можно в базе использовать, что нельзя) Что вас не устраивает в условии с 2 зкзаменами в 1 день?
25 ноя 13, 21:31    [15188057]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
sdet
А при том, что вы отказались топикастеру предложить свое решение сославшись на (у него бизнесс диктует, что можно в базе использовать, что нельзя) Что вас не устраивает в условии с 2 зкзаменами в 1 день?

То, что вы додумали задание. И бизнесс требования.
25 ноя 13, 21:56    [15188148]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
Glory
sdet
А при том, что вы отказались топикастеру предложить свое решение сославшись на (у него бизнесс диктует, что можно в базе использовать, что нельзя) Что вас не устраивает в условии с 2 зкзаменами в 1 день?

То, что вы додумали задание. И бизнесс требования.

Я ничего не додумывал
Нужно определить, не сдает ли какая-либо группа два экзамена в один день.
дата_экзамена, когда у группы несколько экзаменов
25 ноя 13, 22:03    [15188174]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
sdet
Member

Откуда:
Сообщений: 463
Glory,

Обратите внимание, нужно определить, а не удалить
То есть считать, что не может быть 2 экзаменов у группы за 1 день нельзя
25 ноя 13, 22:23    [15188221]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
aleks2
Guest
sdet
Обратите внимание, нужно определить, а не удалить
То есть считать, что не может быть 2 экзаменов у группы за 1 день нельзя


Двух экзаменов в день у группы быть не может. Таковы РЕАЛЬНЫЕ правила в учебных заведениях.

А у тредстартеря явно учебная задача.
Дык, лучше ему научиться правильно данные проектировать.
26 ноя 13, 05:55    [15188939]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
кхе,
Guest
aleks2
Двух экзаменов в день у группы быть не может. Таковы РЕАЛЬНЫЕ правила в учебных заведениях.

По иностранному языку - было.

В один день, в одно и тоже время, - часть группы сдавала английский одному преподавателю в одной аудитории,
и в это же время, другая часть группы, сдавала, в другой аудитории, другому преподавателю, немецкий.

Это два разных экзамена или один?
26 ноя 13, 10:33    [15189703]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
кхе,
Это два разных экзамена или один?

Это две разные группы )
Вряд ли те, кто учил английский должны сдавать немецкий. И наоборот.
26 ноя 13, 10:36    [15189723]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
aleks2,

В российских вузах, может, и нет. А в жизни - вполне.

IELTS состоит из 4 отдельных экзаменов, из них 3 сдаются в один день, подряд, практ. без перерывов, а четвертый назначается персонально каждому, либо в тот же, либо на следующий день. При этом, т.к. экзаменаторов несколько, то сдача четвертой части идет параллельно в соотв. количестве потоков.
26 ноя 13, 10:40    [15189749]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
aleks2
Guest
Ennor Tiegael
aleks2,

В российских вузах, может, и нет. А в жизни - вполне.

IELTS состоит из 4 отдельных экзаменов, из них 3 сдаются в один день, подряд, практ. без перерывов, а четвертый назначается персонально каждому, либо в тот же, либо на следующий день. При этом, т.к. экзаменаторов несколько, то сдача четвертой части идет параллельно в соотв. количестве потоков.


Ээээ, дарагой, низзя так серьезно воспринимать "бизнес-требования", в которых
areweweare
Сессия (id_группы, дата_экзамена)

невозможно определить "это экзамен по какому предмету?"
26 ноя 13, 10:47    [15189773]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
aleks2,

Согласен, нельзя, но строго говоря, для ответа на поставленный вопрос это и не требуется. Он же не просит "несколько разных экзаменов". Таким образом, в данном контексте экзамен = запись в таблице Сессия.

Хотя, безусловно, от реальности это очень далеко.
26 ноя 13, 10:52    [15189798]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет повторяющихся значений sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ennor Tiegael
В российских вузах, может, и нет. А в жизни - вполне.

IELTS состоит из 4 отдельных экзаменов, из них 3 сдаются в один день, подряд, практ. без перерывов, а четвертый назначается персонально каждому, либо в тот же, либо на следующий день. При этом, т.к. экзаменаторов несколько, то сдача четвертой части идет параллельно в соотв. количестве потоков.

А вот тут мы действительно перетекаем к бизнесс-требованиям и определениям.
Что тогда представаляет собой собственно "экзамен" ? Это нечто атомарное или нет ?
Если не атомарное, то какими правилами связаны части ? Может части нельзя разносить по суткам ? А может наоборот запрещено разность по суткам ?
Какими характеристиками обладает "экзамен" ? Вдруг при всем желании невозможно впихнуть в сутки более одного "экзамена" ?
Имхо, не надо за ТС придумывать все возможные варианты определения сущности "экзамен"
26 ноя 13, 10:52    [15189800]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить