Nano Hash - криптовалюты, майнинг, программирование

Как показать количество участников последней отправленной/принятой викторины?

Я разрабатываю простой механизм викторин, аналогичный тому, что используется на веб-сайте ASP.NET. У меня есть следующий дизайн базы данных:

Таблица пользователей: имя пользователя, имя, код подразделения и т. д.

Таблица подразделений: SapCode, подразделение

Таблица викторины: QuizID, заголовок, отправлено, описание

UserQuiz: UserQuizID, QuizID, DateTimeComplete, Оценка, Имя пользователя

Каждую неделю сотрудники моей компании будут получать по электронной почте уведомление об участии в новой викторине, доступной в системе. Тест, который будет отправлен сотрудникам, будет иметь (True) значение атрибута IsSent, и это то, что отличает его от других тестов, которые не отправляются сотрудникам. Теперь я хочу показать количество участников последней пройденной викторины, поскольку каждую неделю будет отправляться только одна викторина.

Мой запрос, который показывает общее количество участников во всех пройденных викторинах:

SELECT     dbo.Divisions.DivisionShortcut, COUNT(DISTINCT dbo.UserQuiz.Username) AS [Number of Participants], dbo.Quiz.QuizID
FROM         dbo.Divisions INNER JOIN
                      dbo.employee ON dbo.Divisions.SapCode = dbo.employee.DivisionCode INNER JOIN
                      dbo.UserQuiz ON dbo.employee.Username = dbo.UserQuiz.Username INNER JOIN
                      dbo.Quiz ON dbo.UserQuiz.QuizID = dbo.Quiz.QuizID
WHERE     (dbo.Quiz.IsSent = 1)
GROUP BY dbo.Divisions.DivisionShortcut, dbo.Quiz.QuizID

Итак, как исправить это, чтобы отображалось только количество участников последнего пройденного теста (отправленного теста)?

27.02.2012

  • Он должен показать результат для последнего, только не для всех тестов, которые отправляются сотрудникам. 27.02.2012
  • Как определить, что последнее? У вас нет поля таблицы datetime: s 27.02.2012
  • Можем ли мы определить это по значениям QuizID и IsSent? 27.02.2012
  • Только если это инкрементное значение. Вы не написали, было это или нет. 27.02.2012
  • Это инкремент, так как это сделать? 27.02.2012

Ответы:


1

Проранжируйте все IsSent = 1 викторины в порядке убывания QuizID, затем выберите второе место:

;
WITH SentQuizRanked AS (
  SELECT
    *,
    ROW_NUMBER() OVER (ORDER BY QuizID DESC) AS rnk
  FROM dbo.Quiz
  WHERE IsSent = 1
)
SELECT
  d.DivisionShortcut,
  COUNT(DISTINCT uq.Username) AS [Number of Participants],
  q.QuizID
FROM dbo.Divisions d
  INNER JOIN dbo.Employee  e ON d.SapCode  = e.DivisionCode
  INNER JOIN dbo.UserQuiz uq ON e.Username = uq.Username
  INNER JOIN dbo.Quiz      q ON uq.QuizID  = q.QuizID
WHERE q.rnk = 2  /* the #1 quiz is the one being advertised,
                    so #2 is the last one taken */
GROUP BY
  d.DivisionShortcut,
  q.QuizID
27.02.2012
  • Спасибо за вашу помощь, но я получил следующую ошибку, и я не знаю, почему: Сообщение 102, уровень 15, состояние 1, строка 5 Неверный синтаксис рядом с «ROW_NUMBER». 27.02.2012
  • @AliAhmed: пропустил запятую между * и ROW_NUMBER(), извините. 27.02.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..