Różnice między wybraną wersją a wersją aktualną.
Poprzednia rewizja po obu stronachPoprzednia wersjaNowa wersja | Poprzednia wersja | ||
notatki:mysql_world [2025/05/13 15:47] – administrator | notatki:mysql_world [2025/05/16 17:26] (aktualna) – administrator | ||
---|---|---|---|
Linia 1: | Linia 1: | ||
- | ====== Przykłady zapytań | + | ~~NOTOC~~ |
+ | ====== | ||
{{: | {{: | ||
Linia 98: | Linia 99: | ||
JOIN EnglishSpeakingCountries esc ON c.Code = esc.CountryCode | JOIN EnglishSpeakingCountries esc ON c.Code = esc.CountryCode | ||
ORDER BY c.Population DESC; | ORDER BY c.Population DESC; | ||
+ | </ | ||
+ | |||
+ | ===== Kraj z największym średnim zaludnieniem miast ===== | ||
+ | (czyli gdzie średnia liczba mieszkańców na miasto jest największa) | ||
+ | <code sql> | ||
+ | SELECT co.Name, AVG(ci.Population) AS AvgCityPopulation | ||
+ | FROM Country co | ||
+ | JOIN City ci ON co.Code = ci.CountryCode | ||
+ | GROUP BY co.Code | ||
+ | HAVING COUNT(ci.ID) > 1 | ||
+ | ORDER BY AvgCityPopulation DESC | ||
+ | LIMIT 1; | ||
+ | </ | ||
+ | ===== Miasta w krajach, których populacja jest powyżej średniej, i w których oficjalnym językiem jest angielski ===== | ||
+ | |||
+ | <code sql> | ||
+ | SELECT ci.Name AS City, co.Name AS Country, ci.Population | ||
+ | FROM City ci | ||
+ | JOIN Country co ON ci.CountryCode = co.Code | ||
+ | WHERE co.Population > ( | ||
+ | SELECT AVG(Population) FROM Country | ||
+ | ) | ||
+ | AND co.Code IN ( | ||
+ | SELECT CountryCode FROM CountryLanguage | ||
+ | WHERE Language = ' | ||
+ | ); | ||
+ | </ | ||
+ | ===== Lista krajów, które mają mniej miast niż średnia liczba miast na kraj, ale powyżej średniej populacji ===== | ||
+ | |||
+ | <code sql> | ||
+ | SELECT co.Name, COUNT(ci.ID) AS CityCount, co.Population | ||
+ | FROM Country co | ||
+ | LEFT JOIN City ci ON co.Code = ci.CountryCode | ||
+ | GROUP BY co.Code | ||
+ | HAVING COUNT(ci.ID) < ( | ||
+ | SELECT AVG(CityCount) | ||
+ | FROM ( | ||
+ | SELECT CountryCode, | ||
+ | FROM City | ||
+ | GROUP BY CountryCode | ||
+ | ) AS SubCityCounts | ||
+ | ) | ||
+ | AND co.Population > ( | ||
+ | SELECT AVG(Population) FROM Country | ||
+ | ); | ||
+ | </ | ||
+ | ===== Wszystkie oficjalne języki krajów, których stolica ma populację powyżej 1 miliona ===== | ||
+ | |||
+ | <code sql> | ||
+ | SELECT DISTINCT cl.Language, | ||
+ | FROM Country co | ||
+ | JOIN CountryLanguage cl ON co.Code = cl.CountryCode | ||
+ | WHERE cl.IsOfficial = ' | ||
+ | AND co.Capital IN ( | ||
+ | SELECT ID FROM City WHERE Population > 1000000 | ||
+ | ); | ||
+ | </ | ||
+ | ===== Kraje z największą różnicą między populacją kraju a jego największym miastem ===== | ||
+ | |||
+ | <code sql> | ||
+ | SELECT co.Name, co.Population - MAX(ci.Population) AS PopulationDiff | ||
+ | FROM Country co | ||
+ | JOIN City ci ON co.Code = ci.CountryCode | ||
+ | GROUP BY co.Code | ||
+ | ORDER BY PopulationDiff DESC | ||
+ | LIMIT 10; | ||
+ | </ | ||
+ | ===== Dla każdego kontynentu: kraj o największej średniej populacji miast ===== | ||
+ | |||
+ | <code sql> | ||
+ | SELECT Continent, Name, AvgCityPop | ||
+ | FROM ( | ||
+ | SELECT co.Continent, | ||
+ | | ||
+ | FROM Country co | ||
+ | JOIN City ci ON co.Code = ci.CountryCode | ||
+ | GROUP BY co.Code | ||
+ | ) AS ranked | ||
+ | WHERE rnk = 1; | ||
+ | </ | ||
+ | ===== Kraje, w których oficjalnie mówi się więcej niż jednym językiem ===== | ||
+ | <code sql> | ||
+ | SELECT co.Name, COUNT(*) AS OfficialLanguages | ||
+ | FROM Country co | ||
+ | JOIN CountryLanguage cl ON co.Code = cl.CountryCode | ||
+ | WHERE cl.IsOfficial = ' | ||
+ | GROUP BY co.Code | ||
+ | HAVING COUNT(*) > 1; | ||
+ | </ | ||
+ | ===== Kraje, w których mówi się językiem, którego nie zna żaden sąsiad z tego samego kontynentu ===== | ||
+ | |||
+ | To wymaga analizy języków w kontekście kontynentu i unikalności – trochę " | ||
+ | <code sql> | ||
+ | SELECT DISTINCT c1.Name, cl1.Language | ||
+ | FROM Country c1 | ||
+ | JOIN CountryLanguage cl1 ON c1.Code = cl1.CountryCode | ||
+ | WHERE cl1.Language NOT IN ( | ||
+ | SELECT cl2.Language | ||
+ | FROM Country c2 | ||
+ | JOIN CountryLanguage cl2 ON c2.Code = cl2.CountryCode | ||
+ | WHERE c2.Continent = c1.Continent | ||
+ | AND c2.Code != c1.Code | ||
+ | ) | ||
+ | AND cl1.IsOfficial = ' | ||
+ | </ | ||
+ | ===== Średnia populacja miast dla każdego języka urzędowego w krajach, gdzie ten język jest używany ===== | ||
+ | <code sql> | ||
+ | SELECT cl.Language, | ||
+ | FROM CountryLanguage cl | ||
+ | JOIN Country co ON cl.CountryCode = co.Code | ||
+ | JOIN City ci ON co.Code = ci.CountryCode | ||
+ | WHERE cl.IsOfficial = ' | ||
+ | GROUP BY cl.Language | ||
+ | ORDER BY AvgCityPopulation DESC; | ||
+ | </ | ||
+ | ===== Lista krajów, które nie mają żadnych miast w bazie danych ===== | ||
+ | <code sql> | ||
+ | SELECT co.Name | ||
+ | FROM Country co | ||
+ | LEFT JOIN City ci ON co.Code = ci.CountryCode | ||
+ | WHERE ci.ID IS NULL; | ||
</ | </ |