2015-09-02 3 views
-1

Я пытаюсь сделать один PostGreSQL 9.3 query.The проблема здесь я должен сосчитать все чистящие средства с рейтингом ниже 4 rating.Here мой запросPostgresql я должен вернуться 0

SELECT count(ratings.score) as below, avg(ratings.score) as avg_rating, cleaners.first_name, cleaners.last_name, cleaners.id, cleaners.created_at 
FROM "cleaners" 
LEFT JOIN ratings ON ratings.cleaner_id = cleaners.id 
GROUP BY cleaners.first_name, cleaners.last_name, cleaners.id, cleaners.created_at 

здесь является следующее результат:

{ 
    "HTTP_CODE": 200, 
    "cleaners": [ 
    { 
     "id": 29, 
     "rating_below_3_stars": 1, 
     "avg_rating": "5.0", 
     "first_name": "asen", 
     "last_name": "asenov" 
    }, 
    { 
     "id": 35, 
     "rating_below_3_stars": 2, 
     "avg_rating": "2.5", 
     "first_name": "Simepl", 
     "last_name": "cleaner" 
    } 
    ] 
} 

пылесос с идентификатором "29" его rating_below_3_stars должны по электронной установлен в 0

Что я хочу:

{ 
    "HTTP_CODE": 200, 
    "cleaners": [ 
    { 
     "id": 29, 
     "rating_below_3_stars": 0, 
     "avg_rating": "5.0", 
     "first_name": "asen", 
     "last_name": "asenov" 
    }, 
    { 
     "id": 35, 
     "rating_below_3_stars": 2, 
     "avg_rating": "2.5", 
     "first_name": "Simepl", 
     "last_name": "cleaner" 
    } 
    ] 
} 
+0

Я не понимаю, что вы хотите сделать. укажите пример текущего результата и пример желаемого результата. – John

+1

результат не соответствует запросу. запрос выбирает только оценки ниже 4, как вы достигаете в среднем 5? –

+0

извините, я исправлю его – user3696668

ответ

-1

считать только рейтинги ниже 4

SELECT sum(case when ratings.score<=3 then 1 else null end) as below, 
     avg(ratings.score) as avg_rating, 
     cleaners.first_name, cleaners.last_name, cleaners.id, 
     cleaners.created_at 
FROM "cleaners" 
LEFT JOIN ratings ON ratings.cleaner_id = cleaners.id 
GROUP BY cleaners.first_name, cleaners.last_name, cleaners.id, cleaners.created_at 
+0

Это работает, я не могу дать + из-за моего рейтинга :). – user3696668