Понимание запроса SQl - PullRequest
       2

Понимание запроса SQl

0 голосов
/ 27 сентября 2018

сегодня я работаю над запросом SQL и просто хочу получить счетчик после получения разницы, как показано в моем запросе, но он показывает избыточное значение счетчика. Пожалуйста, объясните, что происходит?

select ((select count(city) from station) - (select count(distinct city) from station))
from station;

каккогда я использую различные проблемы, следовательно, решена.поэтому помогите мне лучше понять запрос SQL.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы можете подойти к нему по-другому, сократив количество предложений Select.

  • В производной таблице получите значения в пределах одного Select.
  • Использованиерезультат из производной таблицы, чтобы вычислить разницу.

Попробуйте следующее:

SELECT derived_t.total_city_count - derived_t.unique_city_count AS difference 
FROM 
(
  SELECT COUNT(city) AS total_city_count, 
         COUNT(DISTINCT city) AS unique_city_count
  FROM station
)
0 голосов
/ 27 сентября 2018

Если вы просто хотите, чтобы между двумя подзапросами было только одно различие, попробуйте выбрать из таблицы dual:

SELECT
    (SELECT COUNT(city) FROM station) - (SELECT COUNT(DISTINCT city) FROM station) AS diff
FROM dual;

Но на самом деле вы можете сделать это даже без подзапроса.:

SELECT
    COUNT(city) - COUNT(DISTINCT city) AS diff
FROM station;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...