Urichalex
@Urichalex
Кратко о себе)

Как правильно сформировать вложенный запрос MySQL?

Необходимо получить количество всех ответов и количество верных ответов.
Структура таблицы такая:
CREATE TABLE `tests` (
  `id` int(10) UNSIGNED NOT NULL,
  `userId` int(11) UNSIGNED NOT NULL,
  `timestamp` int(11) UNSIGNED NOT NULL,
  `totalQuestions` smallint(3) UNSIGNED DEFAULT NULL,
  `correctAnswers` smallint(3) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


Делаю такой запрос но выводит одинаково что вопросов что ответов
SELECT
    FROM_UNIXTIME(`timestamp`, '%d.%m.%Y') as `date`,
    (SELECT COUNT(`id`)) as totalAnswers,
    (SELECT COUNT(`id`) WHERE `correctAnswers` = `totalQuestions`) as correctAnswers
FROM
    `tests`
WHERE
    `timestamp` >= 1499199647
GROUP BY
    DATE(FROM_UNIXTIME(`timestamp`))
ORDER BY
    `timestamp` ASC

Подскажите, где ошибка
  • Вопрос задан
  • 218 просмотров
Решения вопроса 1
DarkRaven
@DarkRaven
разработка программного обеспечения
А вы можете пример данных показать (с описанием)?
У меня создалось ощущение, что чего-то не хватает - либо у вас не все таблицы тут указаны, либо структура не верная.

UPD 13.07.2017:

SELECT 
 @day:=DATE_FORMAT(t.`timestamp`, '%Y-%m-%d') `date`
, @success:= (SELECT COUNT(id) FROM `tests` WHERE `totalQuestions` = `correctAnswers` AND DATE_FORMAT(`timestamp`, '%Y-%m-%d') = @day) `success`
, @total:= (SELECT COUNT(id) FROM `tests` WHERE DATE_FORMAT(`timestamp`, '%Y-%m-%d') = @day) `total`
, @success* 100 / @total `percent`
 
FROM `tests` t
GROUP BY  DATE_FORMAT(`timestamp`, '%Y-%m-%d')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы