ВЫБЕРИТЕ с помощью INNER JOIN для подсчета дельты и фильтрации результатов - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь выбрать все строки из таблицы B с одинаковым id и вычислить дельту для count значения из таблицы A и количества выбранных строк из B, например:

SELECT A.id, 
       A.count, 
       count(*) AS counter, 
       CAST(count(*) AS SIGNED) - CAST(A.count AS SIGNED) AS delta 
FROM table_A AS A 
INNER JOIN table_B AS B ON B.id = A.id 
GROUP BY A.id

Теперь я вычислил delta, но не могу отфильтровать результаты, где delta > 0 Я пытался поместить HAVING delta > 0 и WHERE delta > 0 здесь и там, но не повезло.Похоже, я что-то упустил с областями в моем запросе.

Ответы [ 2 ]

2 голосов
/ 29 сентября 2019

Попробуйте использовать этот запрос

SELECT * FROM (SELECT A.id, 
   A.count, 
   count(1) AS counter, 
   CAST(count(1) AS SIGNED) - CAST(A.count AS SIGNED) AS delta 
FROM table_A AS A 
INNER JOIN table_B AS B ON B.id = A.id 
GROUP BY A.id) as t where delta > 0
2 голосов
/ 29 сентября 2019

Это то, что вы хотите?

SELECT
    a.id, 
    a.count, 
    COUNT(*) AS counter
FROM cdb_A a
INNER JOIN db_B AS B
    ON b.id = a.id
GROUP BY
    a.id
HAVING
    COUNT(*) > a.count;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...