Пример 35а. Посчитать общую длительность всех вызовов.
SELECT SUM(DLIT)
FROM VYZOVY
Пример 35б. Посчитать общую длительность всех исходящих вызовов (TIP_ID=2).
SELECT SUM(DLIT)
FROM VYZOVY
WHERE TIP_ID=2
Пример 35в. Посчитать общую длительность вызовов каждого типа.
вариант 1 (известны коды)
SELECT TIP_ID, SUM(DLIT)
FROM VYZOVY
GROUP BY TIP_ID
вариант 2 (известны названия)
SELECT T.NAZV, SUM(DLIT)
FROM VYZOVY V, TIPY_VYZ T
WHERE V.TIP_ID=T.ID
GROUP BY T.ID, T.NAZV
Пример 36. Вывести количество номеров определенного контакта.
Пример 37. Вывести количество номеров для каждого контакта.
Пример 38. Вывести количество контактов в каждой группе.
Пример 39. Вычислить, со сколькими контактами был зафиксирован каждый тип вызова.
Неправильно (вычисляется количество вызовов, а не количество контактов):
SELECT T.NAZV, COUNT(N.KONT_ID)
FROM TIPY_VYZ T, VYZOVY V, NOMERA N
WHERE (T.ID=V.TIP_ID) AND (V.NOMER_ID=N.ID)
GROUP BY T.ID, T.NAZV
Не работает в Microsoft Access:
SELECT T.NAZV, COUNT(DISTINCT N.KONT_ID)
FROM TIPY_VYZ T, VYZOVY V, NOMERA N
WHERE (T.ID=V.TIP_ID) AND (V.NOMER_ID=N.ID)
GROUP BY T.ID, T.NAZV
Пример 40. Для каждого контакта вывести дату и время самого первого вызова каждого типа.
SELECT K.NAME1, T.NAZV, MIN(VREMYA) AS FIRST
FROM KONTAKTY K, NOMERA N, VYZOVY V, TIPY_VYZ T
WHERE (T.ID=V.TIP_ID) AND (V.NOMER_ID=N.ID) AND (N.KONT_ID=K.ID)
GROUP BY K.ID, K.NAME1, T.NAZV