2016-08-09 4 views
0
SELECT 
    userid, 
    CASE 
     WHEN (COUNT(CASE 
         WHEN onlinesportsgamewagers != 0 
         THEN 1 
         ELSE null 
        END) 
      + COUNT(CASE 
         WHEN depositmade_amt != 0 
          THEN 1 
          ELSE null 
        END)) >= 10 
      THEN "VIP" 
      ELSE "NON-VIP" 
    END as VIPcheck    
FROM 
    player_activity 
WHERE 
    userid = 2023410 
GROUP BY 
    year(txndate), month(txndate) 

Этот запрос определяет VIP-статус пользователя для каждого месяца.Как использовать условие в SQL-запросе

В конечном счете, у меня есть запрос, который определяет, достиг ли пользователь статуса VIP не менее 3 месяцев (включая текущий месяц). На данный момент это только пользователь 2023410, но в конечном итоге я хочу запустить его для всей базы данных.

Поэтому моя конечная выход будет:

пользователя - VIPcheck (3 различных мес ж/активное состояние)

(одна строки за идентификатор пользователя)

HAVING COUNT(CASE WHEN (COUNT(CASE WHEN onlinesportsgamewagers != 0 
      THEN 1 
       ELSE null 
      END) 
       + COUNT(CASE WHEN depositmade_amt != 0 
         THEN 1 
          ELSE null 
         END)) >= 10 
      THEN 1 
       ELSE 0 
       END) 

Судим выше, имеющее заявление, но это не сработало. Какие-либо предложения?

ответ

0

Если я правильно понимаю, это получает статус VIP для одного пользователя в месяц:

SELECT userid, year(txndate), month(txndate),                       
     (CASE WHEN SUM(CASE WHEN onlinesportsgamewagers <> 0 THEN 1 ELSE 0 END) + 
        SUM(CASE WHEN depositmade_amt <> 0 THEN 1 ELSE 0 END) >= 10 
      THEN 'VIP' 
      ELSE 'NON-VIP' 
     END) as VIPcheck    
FROM player_activity 
GROUP BY userid, year(txndate), month(txndate); 

Другой агрегация получите то, что вы хотите:

SELECT userid, 
     (CASE WHEN SUM(VIPcheck = 'VIP') >= 3 THEN 'SUPER-VIP' 
      WHEN SUM(VIPcheck = 'VIP') >= 1 THEN 'VIP' 
      ELSE 'HOI POLLOI' 
     END) as status 
FROM (SELECT userid, year(txndate), month(txndate),                       
      (CASE WHEN SUM(CASE WHEN onlinesportsgamewagers <> 0 THEN 1 ELSE 0 END) + 
         SUM(CASE WHEN depositmade_amt <> 0 THEN 1 ELSE 0 END) >= 10 
        THEN 'VIP' 
        ELSE 'NON-VIP' 
       END) as VIPcheck    
     FROM player_activity 
     GROUP BY userid, year(txndate), month(txndate) 
    ) uym 
GROUP BY userid; 
+0

Привет. ваш запрос, похоже, работал. Тем не менее, я не понимаю, почему можно было бы поставить статус VIP для одного пользователя в месяц в разделе FROM, а не в секции SELECT? – eddd83

+0

@ eddd83. , , Я не совсем понимаю комментарий, но этот запрос должен выполнять две совокупности. Следовательно, в предложении 'FROM' есть подзапрос. –

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

  • Нет связанных вопросов^_^