Средний балл за данное имя за текущий месяц - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть набор табличных данных для оценки обслуживания клиентов за один вызов за текущий год, и я пытаюсь создать запрос для расчета средней оценки для данного имени в течение данного месяца

Что-то вродевычисление среднего балла за звонки Мэтта за январь месяц.

Я пытался, но я новичок в SQL, поэтому у меня возникли проблемы.

Пока у меня естьполучил это:

Select avg("general score") as General_Score, avg("Re_score") as Re_score 
from Voc2019 
Where [Name] ="Matt"

Это дает мне несоответствие типов ошибок

Буду очень признателен за любую помощь, вы можете предоставить мне.

ОБНОВЛЕНИЕ:

код теперь работает, но хотя это работает, мне все еще нужно упорядочить по определенной дате, но я хочу использовать эту строку sql для получения среднего значения за указанный месяц, в зависимости от того месяца, который я хочу получить от Excel, но он не возвращает никаких результатов

Например, я хочу получить средний балл за Мэтта в январе

В настоящее время я получил

Select avg([general score]) as general_score, ("Re_score") as Re_score 
from Voc2019 
Where [Name] ="Matt" and Score_Date = Month(2) 

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Я более знаком с синтаксисом Oracle SQL, но почти уверен, что проблема в некотором простом синтаксисе MS Access .Ваша буквенная строка «Matt», которая должна быть заключена в одинарные кавычки, как в «Matt», и квадратные скобки используются для включения идентификатора столбца, только если он содержит пробел.

Попробуйте:

Select avg([general score]) as General_Score, avg(Re_score) as Re_score 
from Voc2019 
Where Name = 'Matt'
0 голосов
/ 21 февраля 2019

Основная проблема с вашим кодом состоит в том, что вы используете строку ("general score") при попытке ссылки на поле (это, вероятно, приводит к ошибке несоответствия типов).

Вы не указалиполе в вашей таблице, которое содержит дату для каждой записи, и поэтому выбор соответствующего набора записей для данного месяца невозможен без этой информации.

Однако, чтобы исправить ваш текущий код, я бы предложил следующее:

select avg(voc2019.[general score]) as General_Score, avg(voc2019.re_score) as Re_score 
from voc2019 
where voc2019.name = "Matt"

Если бы вы идентифицировали поле, содержащее дату для каждой записи, вы могли бы рассчитать среднее значение за месяц, используя что-то вроде:

select 
    dateserial(year(voc2019.date), month(voc2019.date), 1) as [Month],
    avg(voc2019.[general score]) as General_Score, 
    avg(voc2019.re_score) as Re_score 
from 
    voc2019 
where 
    voc2019.name = "Matt"
group by
    dateserial(year(voc2019.date), month(voc2019.date), 1)

Выше предполагается, что ваша таблица voc2019 содержит поле с именем date, датирующее каждую запись.

РЕДАКТИРОВАТЬ:

Поскольку ваша дата фактически хранится в виде текстового поля, а не поля даты, вы можете использовать DateValueфункция для разбора текстового содержимого в значение даты.

Следовательно, чтобы получить среднюю оценку за Мэтта в январе, вы можете использовать что-то вродеследующее:

select 
    avg(voc2019.[general score]) as General_Score, 
    avg(voc2019.re_score) as Re_score 
from 
    voc2019 
where 
    voc2019.name = "Matt" and 
    month(datevalue(voc2019.date)) = 1 and
    year(datevalue(voc2019.date)) = 2019

В качестве альтернативы, поскольку ваша дата хранится в виде текста, вы можете использовать оператор like для сопоставления только дат в январе, например:

select 
    avg(voc2019.[general score]) as General_Score, 
    avg(voc2019.re_score) as Re_score 
from 
    voc2019 
where 
    voc2019.name = "Matt" and voc2019.date like "##-01-2019"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...