2013-10-03 2 views
0

Мой текущий запрос не возвращает правильные значения. Моя база данных заполнена журналами, каждый журнал содержит код. Я ищу 4 кода, скажем (100, 200, 300, 400).MySQl. Как бы вы пишете этот запрос

Мне нужно знать, сколько раз определенный session_id активировал только 1 код, 2 из кодов, 3 из кодов и все 4 из кодов.

Запрос будет выполняться 4 раза, каждый раз, используя разные параметры (1,2,3,4).

Так что, если есть журнал с каждым из кодов с той же session_id, что будет +1, когда я запускаю запрос на 4.

+2

и ваша попытка? –

ответ

2

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

SELECT codecount, COUNT(*) AS sessioncount 
FROM (
    SELECT session_id, COUNT(DISTINCT code) AS codecount 
    FROM log 
    WHERE code IN (100, 200, 300, 400) 
    GROUP BY session_id 
) AS c 
GROUP BY codecount; 
+0

Какова цель группы по codecount? –

+0

OP сказал, что они хотят подсчет количества - сколько сеансов имели определенное количество матчей. Таким образом, codecount варьируется от 1-4, а sessioncount - сколько сеансов имеет каждый промежуточный итог количества согласованных кодов. –

+0

Не нужно ли 'codecount' добавлять в главное предложение SELECT? –

Смежные вопросы