Использовать счетчик SQL (*) со столбцом псевдонимов - PullRequest
1 голос
/ 22 апреля 2019

Привет, я пытаюсь использовать https://data.stackexchange.com/stackoverflow/query/new, чтобы получить стека переполнения золотых медалистов из моей страны. Вот мой запрос

SELECT TOP 1000
  ROW_NUMBER() OVER(ORDER BY Gold badges DESC) AS [#], 
  UserId AS [User Link], 
  COUNT(*) AS "Gold badges"
FROM Badges, Users
WHERE Name IN ('Copy Editor', 'Electorate', 'Famous Question', 'Fanatic', 'Great Answer', 'Great Question', 'Legendary', 'Marshal', 'Populist', 'Publicist', 'Reversal', 'Stellar Question', 'Steward', 'Unsung Hero')
AND LOWER(Location) LIKE '%sri lanka%' AND Users.Id = Badges.UserId
GROUP BY UserId
ORDER BY COUNT(*) DESC

Что мне нужно сделать, так это достать золотые медалисты всех моих стран с указанием названия и номера строки золотой медали. Но я получаю эту ошибку,

Неверный синтаксис рядом с ключевым словом "DESC".

было бы здорово, если бы кто-то мог помочь.

1 Ответ

3 голосов
/ 22 апреля 2019

Я думаю, вы хотите что-то вроде этого:

SELECT TOP 1000
       ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS [#], 
       u.id AS User_Link, 
       COUNT(*) AS Gold_badges
FROM Badges b JOIN
     Users u
     ON u.Id = b.UserId
WHERE ?.Name IN ('Copy Editor', 'Electorate', 'Famous Question', 'Fanatic', 'Great Answer', 'Great Question', 'Legendary', 'Marshal', 'Populist', 'Publicist', 'Reversal', 'Stellar Question', 'Steward', 'Unsung Hero'
                ) AND
     LOWER(?.Location) LIKE '%sri lanka%' AND 
GROUP BY u.id
ORDER BY COUNT(*) DESC;

Примечания:

  • ? для псевдонима таблицы, который определяет, откуда берутся столбцы.
  • Никогда не использует запятые в предложении FROM.
  • Исправляет синтаксис объединения для использования правильных, явных, стандартных объединений.
  • Вы не можете использовать псевдонимы таблиц где-либо еще в том же SELECT.Итак, повторите выражение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...