MariaDB выбирает только результаты, превышающие - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть запрос, который выглядит следующим образом:

select uid,leadcount,salescount,leadcount/salescount as diff from 
(
SELECT x.uid, COUNT(*) leadcount, COUNT(DISTINCT x.fid)
FROM total_leads AS x
WHERE x.uid BETWEEN 1 AND 5
GROUP BY x.uid
) t1 left join 
(
SELECT ud.UserId, COUNT(*) salescount, COUNT(DISTINCT ud.SalesID)
FROM total_sales AS ud
WHERE ud.UserId BETWEEN 1 AND 5
GROUP BY ud.UserID
) t2 on t1.uid=t2.UserId

В результате:

enter image description here

Япытаясь отобразить только результаты, где diff больше 2.5 (поэтому в этом случае на выходе должны быть видны только uid 5 ).

Я пытался использовать WHERE diff >= 2.5, но получил "В вашем синтаксисе SQL есть ошибка" .

Рабочий пример MySQL

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Просто повторите исходное выражение в предложении WHERE вместо использования псевдонима:

SELECT uid leadcount, salescount, leadcount/salescount AS diff
FROM
(
    ...
) t
WHERE leadcount/salescount >= 2.5;

Проблема со ссылкой на diff в предложении WHERE состоит в том, что оно еще не доступно,Кроме того, см. Ответ Гордона для другого варианта, предполагая, что вы никогда не планируете агрегироватьНо использование HAVING - это только опция для MySQL или MariaDB.

0 голосов
/ 18 февраля 2019

В MySQL и MariaDB вы можете просто добавить предложение HAVING в конец запроса:

HAVING diff >= 2.5

Это действует как WHERE, но может использовать псевдоним.

...