Я полностью застрял на том, как написать код SQL для обработки задачи, которую я должен подготовить. Мы используем Sybase ASA. Он встроен в приложение. Запрос должен произвести следующий вывод:Добавьте все случаи, когда существует условие
Медиа-сервер | Всего NUmber резервных копий | Размер тома (KB) | Средняя пропускная способность | Количество успешных | Успех в работе%
Каждый медиа-сервер будет уникальным.
У меня возникла проблема с получением количества успешных рабочих мест, а затем определения% успеха.
Вот код, у меня есть:
SELECT
dmj.name AS "Media Server",
CAST(SUM(dj.bytesWritten/1024/1024) as decimal(20,2)) as "Volume(MB)",
COUNT(distinct dj.id) AS "Total Number of Jobs",
CAST(AVG(dj.throughput) as decimal(10,2)) AS "Throughput (KB/sec)",
CASE
WHEN dj.statusCode = '0'
THEN COUNT (dj.statusCode)
END AS "Number of Successful Jobs"
FROM domain_JobArchive dj
INNER JOIN domain_MediaServer dmj
ON dj.mediaServerName = dmj.name
WHERE DATEDIFF(day, UtcBigIntToNomTime(dj.endTime), GETDATE()) <= 7
AND dj.Type != '17'
AND dj.statusCode = 0
GROUP BY dmj.name, dj.statusCode
Я также до сих пор не знает, как показать% успех.
Мы используем Sybase ASA, поскольку она встроена в приложение.
Спасибо.
Интересно, является ли причиной проблемы проблема с частью statusCode. СЛУЧАЙ, содержащий совокупность, будет работать? Случай работает в строке, но агрегат находится над строками: я не думаю, что это сработает. Возможно, вам понадобится SUM (CASE, когда dj.statusCode = '0', а затем 1 else 0 end), чтобы получить количество успехов. Процент успешной - это выражение, деленное на COUNT (*). –
Хороший пункт Abe. Я не знал, как обрабатываются данные CASE. Я попробую это и посмотрю, что он производит. – Opethian
Как мне показать код для вычисления Процент? Было бы что-то вроде: SUM (CASE WHEN dj.statusCode = '0' THEN COUNT (dj.statusCode) END/COUNT (*)) AS "Success%" – Opethian