SQL

SQL примеры запросов

  • ТОП 10 или Выбрать все строки из таблицы city и упорядочить по имени name

(desc - по убыванию, т.е выводить с конца алфавита к началу). Ограничить вывод 10 значениями:

select * from city
order by name desc
limit 10

 

  • Объединение таблиц city и country по колонке id, с условием id>=0 и имя Россия или Румыния, вывод упорядочить по city.name

select * from city
inner join country on city.region_id=country.id
where country.id>=0 AND (country.name='Россия' or country.name='Румыния')
order by city.name

  • ИЛИ:

select * from city
inner join country on city.region_id=country.id
where country.id>=0 AND country.name IN ('Россия','Румыния')
order by city.name

 

  • LIKE

Select * From city
Where country.name Like 'Руан%'

 

Возможно использование в блоке HAVING:

Select id, name,region_id From city
Group By name, id,region_id
Having name Like 'Ryb%'
order by id

  • Оператор CASE

select *,
CASE
when region_id>=1000 then 'Кирилица'
when region_id>=100 then 'Латиница'
else 'middle'
end as Tags
from city
order by name

 

  • HAVING

Select id, name,region_id From city
Group By name, id,region_id
Having name Like 'Ryb%'
order by id

 

  • SUM

Select country.name, SUM(city.id) TotalSum From city -- вывести сумму колонки ID в колонку с названием TotalSum из таблицы City
Left join country on city.region_id=country.id --присоединить к таблице City(все данные) таблицу Country(отсутствующие данные допишутся Null)
where country.name is not Null - выводить только заполненные поля
group by country.name --сгруппировать в одну строку все одинаковые имена
order by country.name --Упорядочить по алфавиту

 

 

 

  • MIN MAX

Select country.name, MIN(city.id) MinID, MAX(city.id) MaxID From city -- вывести MAX, MIN в колонки MinID и MaxID из таблицы City
Left join country on city.region_id=country.id --присоединить к таблице City(все данные) таблицу Country(отсутствующие данные допишутся Null)
where country.name is not Null -- выводить только аполненные поля
group by country.name --сгруппировать в одну строку все одинаковые имена
order by country.name --Упорядочить по алфавиту

 

  • COUNT

Выбрать топ 5 стран у которых максимальное количество регионов

Select country.name,
Count (Distinct region.name) OriginalRegions
From country
Left Join region on country.id=region.country_id
Left Join city on city.region_id=region.id
Group by country.name
Order By Count(Distinct region.name) desc
Limit 5

Выбрать топ 5 стран c наибольшим количеством городов

Select country.name,
Count (Distinct city.name)
From country
Left Join region on country.id=region.country_id
Left Join city on region.id=city.region_id
Group By (country.name)
--Having country.name Like 'Бел%'
Order by Count (Distinct city.name) desc
Limit 5

Вывести инфу по всем странам (страна - количество регионов - количество городов)

Select country.name,
Count (Distinct region.name) Regions,
Count (Distinct city.name) Cities
From country
Left Join region on country.id=region.country_id
Left Join city on region.id=city.region_id
Group By (country.name)
Order by (country.name)

  • Вложенный запрос

вывести список регионов из Беларуси и Украины

Select * From region
Where country_id IN

--Where country_id=ANY -- каждому из списка

--Where country_id  !=ALL --не из данного списка

--Where country_id NOT IN --не в списке

--Where EXISTS
--вложенный запрос на id стран Беларусь и Украина:
(Select id from country
Where (country.name='Беларусь' or country.name='Украина'))

© 2021 QAstart.by