COUNTRI выдает ошибку при выполнении запроса, даже если синтаксис правильный - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть таблица с именем CUSTOMERS со столбцом COUNTRY. Я хочу получить город, в котором больше всего клиентов, иными словами, самый частый COUNTRY в таблице CUSTOMERS.

Я получаю сообщение об ошибке:

ORA-00904: "СТРАНА": неверный идентификатор

Мой код:

SELECT 
    COUNTRY,
    COUNT(COUNTRY) AS `value_occurrence` 
FROM 
    CUSTOMERS
GROUP BY 
    COUNTRY
ORDER BY 
    `value_occurrence` DESC
LIMIT 1;

1 Ответ

2 голосов
/ 17 апреля 2019

Ваш синтаксис MySQL, который не является переносимым. MySQL - это другая СУБД, чем Oracle.

Вот ваш запрос в стандартном SQL. Он работает в Oracle с версии 12c.

select country, count(*) as value_occurrence
from customers
order by value_occurrence desc
fetch first row only;

В более ранних версиях Oracle вы можете использовать:

select country, value_occurrence
from
(
  select 
    country,
    count(*) as value_occurrence,
    row_number() over (order by count(*) desc) as rn
  from customers
)
where rn = 1;

Если вы хотите разрешить связи, то вы изменили бы only на with ties в первом запросе и row_number на rank или dense_rank во втором.

...