У меня есть большая таблица журналов в базе данных, в которой мне нужно извлечь некоторую информацию.Построить SQL-запрос
Выход я работаю в направлении является:
день - Попытки - Неудачные попытки
Моя таблица выглядит так;
LogID - Timestamp - Sender - Receiver - SecondsConEst - InOut - ErrorMsg - MsgID
Чтобы извлечь эту ошибку, что нужно подсчитать MsgID, где SecondsConEst является> = 1 и InOut = Выход и где MsgID было повторено 8 или более раз.
В настоящее время у меня есть:
SELECT date(timestamp) as Day, count(MsgID) as attempts
FROM database.log
where Receiver like 'AAB%' and out = 'Out' and (SecondsConEst >= '1' and ErrorMsg != '')
group by MsgID having count(messageid) >= 8 ;
Теперь это дает мне
Day Attempts
2016-02-15 9
2016-02-15 8
Но я хотел бы объединить это. Если попытка равна 8 или более, ее можно называть «неудачной» и ее следует считать неудачной, показывая, что в этот день общее число не прошло.
Я попытался с помощью
count(case when count(MsgID >= 8) then 1 else NULL end)
в моем выборе, но это дает мне «Invalid использование групповой функции».
Я также, конечно, хотел бы показать общие попытки, можно ли для этого сделать какое-то внутреннее соединение? Как
SELECT (distinct MsgID) inner join where...
Любые указатели были бы замечательными.
Можете ли вы добавить данные таблицы образцов и ожидаемый результат? (Кроме того, вы используете MySQL и MS SQL Server здесь?) – jarlh
MySQL не совпадает с SQL Server, какой из них вы используете? Или вы пытаетесь придумать что-то, что работает на обоих? –
Ваш синтаксис предлагает MySQL, поэтому я удалил тег SQL Server. –