Борьба с псевдонимами в операторах регистра и математических операциях

#sqlite #yelp

#sqlite #yelp

Вопрос:

Я работаю с базой данных Yelp и хотел бы выполнить запрос, используя только таблицу user:

  • Вычислите количество лет, в течение которых пользователь был в Yelp. Те, кто работает на платформе в течение 1 года, будут относиться к группе «молодые», те, кто работает на платформе не менее 5 лет, будут относиться к группе «старые»;
  • Для этих групп я также хочу рассчитать среднее количество отзывов, написанных за год (review_count, деленное на количество лет в Yelp).
  • Для «старой» группы я хочу разделить количество поклонников на review_count (и найти соотношение поклонников на обзор).
  • Для «молодой» группы я хочу умножить их текущее среднее количество обзоров в год на 5, а затем умножить это число на соотношение поклонников на обзор «старой» группы.

Я новичок (как вы, очевидно, можете сказать) и перепробовал все, что знаю, но я не могу найти способ заставить это работать. Я создал операции date и math, которые затем попытался использовать в операторах case, но это не сработало.

Какие-нибудь полезные советы, пожалуйста?

Спасибо!

Кстати, это то, что я пробовал до сих пор:

 SELECT COUNT(id) AS number_of_users
,SUM(review_count) / SUM(fans) AS reviews_fan_ratio
,(DATE('now') - yelping_since) AS years_on_yelp
,SUM(review_count) / years_on_yelp AS reviews_per_year
  ,CASE
    WHEN years_on_yelp <= 5 THEN 'young'
    WHEN years_on_yelp > 5 THEN 'old'
    END age
FROM user
GROUP BY age;
 

Комментарии:

1. Пожалуйста, покажите нам, что вы сделали до сих пор (SQL).

2. Привет, Оливье, спасибо за ответ. Я только что добавил фрагмент кода.

3. Как это «не работает»? Какие ошибки есть?

4. Я внес изменения в код, чтобы представить столько, сколько я хотел достичь с помощью запроса. Ошибка, которую я получаю, это «нет такого столбца: years_on_yelp», который я хотел бы использовать в своем операторе case. После решения этой проблемы мне все равно нужно будет выполнить еще пару математических операций, но они будут включать результаты других вычислений, в отличие от столбцов, изначально присутствующих в таблице.

5. Вы знаете, очень сложно читать код с маленькой картинки и постоянно переключаться между ним и вашим сообщением. Не могли бы вы добавить свою структуру таблицы в виде текста, то есть вывода команды .schema или .schema user в программе sqlite3?