Что-то я не соображу как запрос сделать..
От: glut  
Дата: 11.11.02 16:34
Оценка:
Hi.

Есть таблица Exams: ExamID|ExamDate|ExamType

Нужен запрос, который вернет: ExamYear|TotalExamsThisYear|TotalExamsThisYearOfTypeX

Я придумал запрос:

SELECT DatePart(yy,ExamDate), SUM(TotalExamsThisYear), SUM(TotalExamsThisYearOfTypeX) 
FROM
(SELECT ExamDate, COUNT(*), 
  (SELECT COUNT(*) FROM Exams WHERE Exams.ExamDate=e.ExamsDate AND Exams.ExamType=X)
 FROM Exams) AS Totals
GROUP BY DatePart(yy,ExamDate)


Мне кажется, что он какой-то кривой совсем. Кто-нибудь может придумать лучше?

Заранее всем спасибо.
Re: Что-то я не соображу как запрос сделать..
От: glut  
Дата: 11.11.02 16:48
Оценка:
Здравствуйте glut, Вы писали:

ПОПРАВКА

SELECT DatePart(yy,ExamDate), SUM(TotalExamsThisYear), SUM(TotalExamsThisYearOfTypeX) 
FROM
(SELECT ExamDate, COUNT(*) as TotalExamsThisYear, 
   (SELECT COUNT(*) as TotalExamsThisYearOfTypeX 
    FROM Exams WHERE Exams.ExamDate=e.ExamsDate AND Exams.ExamType=X)
 FROM Exams) AS Totals
GROUP BY DatePart(yy,ExamDate)
Re[2]: Что-то я не соображу как запрос сделать..
От: VVP Россия 67524421
Дата: 11.11.02 17:20
Оценка:
Здравствуйте glut, Вы писали:

А попробуй так, тока TABLE ACCESS FULL, похоже, получишь
SELECT RA.*,
  (SELECT COUNT(*) FROM EXAMS WHERE DATEPART('YY',EXAMDATE)=RA.YEAR) AS TOTAL_COUNT
FROM (
  SELECT DATEPART('YY',EXAMDATE) AS YEAR, EXAMTYPE, COUNT(*) AS EXAMTYPE_COUNT
  FROM EXAMS
  WHERE (EXAMDATE>='01.01.1991' AND EXAMDATE<'01.01.2003')
  GROUP BY DATEPART('YY',EXAMDATE), EXAMTYPE
) RA
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[2]: Что-то я не соображу как запрос сделать..
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.11.02 00:09
Оценка:
Здравствуйте glut, Вы писали:
Ну, если это MSSQL, то надо так:

[sql]
SELECT DatePart(yy,ExamDate), Count(*) as TotalExamsThisYear, Sum(case ExamType when X then 1 else 0 end) as TotalExamsThisYearOfTypeX
FROM Exams
GROUP BY DatePart(yy,ExamDate)
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Что-то я не соображу как запрос сделать..
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.11.02 00:10
Оценка: 12 (1)
Здравствуйте glut, Вы писали:

G>Hi.


G>Есть таблица Exams: ExamID|ExamDate|ExamType


G>Нужен запрос, который вернет: ExamYear|TotalExamsThisYear|TotalExamsThisYearOfTypeX


Ой, раскраску прокосячил:

SELECT DatePart(yy,ExamDate), Count(*) as TotalExamsThisYear, Sum(case ExamType when X then 1 else 0 end) as TotalExamsThisYearOfTypeX 
FROM Exams 
GROUP BY DatePart(yy,ExamDate)
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Что-то я не соображу как запрос сделать..
От: glut  
Дата: 12.11.02 12:43
Оценка:
Здравствуйте Sinclair, Вы писали:

S>Ой, раскраску прокосячил:


S>
S>SELECT DatePart(yy,ExamDate), Count(*) as TotalExamsThisYear, Sum(case ExamType when X then 1 else 0 end) as TotalExamsThisYearOfTypeX 
S>FROM Exams 
S>GROUP BY DatePart(yy,ExamDate) 
S>


Гениально! Большое спасибо!!!
А на Access'е (в итоге все будет на MSSQL, но мне нужно сделать демку для заказчика, а она будет на Access'е) это как сделать? Кроме того что я придумал, что-нибудь можно сделать? На Acess'е, правда, нельзя сделать SELECT .. FROM (SELECT ...), но можно сделать View.

Еще раз большое спасибо!
Re[3]: Что-то я не соображу как запрос сделать..
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.11.02 17:45
Оценка:
Здравствуйте glut, Вы писали:

G>Здравствуйте Sinclair, Вы писали:


S>>Ой, раскраску прокосячил:


G>А на Access'е (в итоге все будет на MSSQL, но мне нужно сделать демку для заказчика, а она будет на Access'е) это как сделать? Кроме того что я придумал, что-нибудь можно сделать? На Acess'е, правда, нельзя сделать SELECT .. FROM (SELECT ...), но можно сделать View.


Попробуй так (я не уверен — не очень секу в аксессе, и проверить сейчас не могу):
SELECT DatePart(yy,ExamDate), Count(*) as TotalExamsThisYear, Sum(IIF(ExamType = X, 1, 0)) as TotalExamsThisYearOfTypeX 
FROM Exams 
GROUP BY DatePart(yy,ExamDate)
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Что-то я не соображу как запрос сделать..
От: glut  
Дата: 12.11.02 22:10
Оценка:
Здравствуйте Sinclair, Вы писали:

S>Попробуй так (я не уверен — не очень секу в аксессе, и проверить сейчас не могу):

S>
S>SELECT DatePart(yy,ExamDate), Count(*) as TotalExamsThisYear, Sum(IIF(ExamType = X, 1, 0)) as TotalExamsThisYearOfTypeX 
S>FROM Exams 
S>GROUP BY DatePart(yy,ExamDate) 
S>

Удивительно, какой я тупой! =)

Большое спасибо!
Re[5]: Что-то я не соображу как запрос сделать..
От: ligett Россия  
Дата: 15.11.02 10:41
Оценка:
Здравствуйте, glut, Вы писали:

G>Здравствуйте Sinclair, Вы писали:


S>>Попробуй так (я не уверен — не очень секу в аксессе, и проверить сейчас не могу):

S>>
S>>SELECT DatePart(yy,ExamDate), Count(*) as TotalExamsThisYear, Sum(IIF(ExamType = X, 1, 0)) as TotalExamsThisYearOfTypeX 
S>>FROM Exams 
S>>GROUP BY DatePart(yy,ExamDate) 
S>>

G>Удивительно, какой я тупой! =)

Ну зачем же так самокритично!

G>Большое спасибо!

Пожалуйста-незачто
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.