Я использую SQL Server , и у меня есть две огромные таблицы, содержащие всевозможные данные. Я хотел бы получить данные о том, сколько латышей или русских проживает в каждом городе.
Столбец «Язык» содержит более двух языков, но я хотел бы запросить только «латышский» и «русский»
Table1 (заслуживающие упоминания столбцы):
ID
ProjectID
Phone_nr
City
Table2 (заслуживающие упоминания столбцы):
ID
ProjectID
Phone_nr
Language
Я хочу, чтобы запрос извлекал информацию примерно так:
City1(RU) | Amount of Russians
City1(LT) | Amount of Latvians
City2(RU) | Amount of Russians
City2(LT) | Amount of Latvians
.. etc
Или что-то вроде этого:
City1 | Amount of Russians | Amount of Latvians | Total amount of people
City2 | Amount of Russians | Amount of Latvians | Total amount of people
City3 | Amount of Russians | Amount of Latvians | Total amount of people
.. etc
Интересно, какое решение для этого будет лучшим? Должен ли я использовать join
или union
или простой select
?
Я придумал такой запрос:
SELECT DISTINCT top 100 t.city, count(t.city) as 'Total amount of nr in city', count(*), l.language
FROM table1 l, table2 t
WHERE l.phone = t.phone and l.projectID = t.projektID
group by t.city, l.language
Я считаю, что предложение where
правильное поскольку в обеих таблицах есть номера телефонов и идентификаторы проектов, важно, чтобы запрос выбирал с этим предложением where. К сожалению, это не совсем работает. Он возвращает строки в следующем формате:
City1 | Amount of y | total amount of numbers in this language
City1 | Amount of x | total amount of numbers in that language
Это близко, но этого недостаточно. Примечание: я использую select top 100
только для тестирования, я выберу все, как только у меня будет правильный запрос.
Может ли кто-нибудь помочь или указать мне правильное направление? Спасибо