Narzędzia użytkownika

Narzędzia witryny


notatki:mysql_world

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
notatki:mysql_world [2025/05/13 15:47] administratornotatki:mysql_world [2025/05/16 17:26] (aktualna) administrator
Linia 1: Linia 1:
-====== Przykłady zapytań MySQL na bazie World ======+~~NOTOC~~ 
 +====== MySQL: Przykłady zapytań na bazie World ======
  
 {{:notatki:pasted:20250513-154333.png}}\\ {{:notatki:pasted:20250513-154333.png}}\\
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;
 +</code>
 +
 +===== 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;
 +</code>
 +===== 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 = 'English' AND IsOfficial = 'T'
 +);
 +</code>
 +===== 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, COUNT(*) AS CityCount
 +        FROM City
 +        GROUP BY CountryCode
 +    ) AS SubCityCounts
 +)
 +AND co.Population > (
 +    SELECT AVG(Population) FROM Country
 +);
 +</code>
 +===== Wszystkie oficjalne języki krajów, których stolica ma populację powyżej 1 miliona =====
 +
 +<code sql>
 +SELECT DISTINCT cl.Language, co.Name AS Country
 +FROM Country co
 +JOIN CountryLanguage cl ON co.Code = cl.CountryCode
 +WHERE cl.IsOfficial = 'T'
 +AND co.Capital IN (
 +    SELECT ID FROM City WHERE Population > 1000000
 +);
 +</code>
 +===== 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;
 +</code>
 +===== Dla każdego kontynentu: kraj o największej średniej populacji miast =====
 +
 +<code sql>
 +SELECT Continent, Name, AvgCityPop
 +FROM (
 +    SELECT co.Continent, co.Name, AVG(ci.Population) AS AvgCityPop,
 +           RANK() OVER (PARTITION BY co.Continent ORDER BY AVG(ci.Population) DESC) AS rnk
 +    FROM Country co
 +    JOIN City ci ON co.Code = ci.CountryCode
 +    GROUP BY co.Code
 +) AS ranked
 +WHERE rnk = 1;
 +</code>
 +===== 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 = 'T'
 +GROUP BY co.Code
 +HAVING COUNT(*) > 1;
 +</code>
 +===== 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ę "sztuczne", ale ciekawe:
 +<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 = 'T';
 +</code>
 +===== Średnia populacja miast dla każdego języka urzędowego w krajach, gdzie ten język jest używany =====
 +<code sql>
 +SELECT cl.Language, AVG(ci.Population) AS AvgCityPopulation
 +FROM CountryLanguage cl
 +JOIN Country co ON cl.CountryCode = co.Code
 +JOIN City ci ON co.Code = ci.CountryCode
 +WHERE cl.IsOfficial = 'T'
 +GROUP BY cl.Language
 +ORDER BY AvgCityPopulation DESC;
 +</code>
 +===== 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;
 </code> </code>
notatki/mysql_world.1747144022.txt.gz · ostatnio zmienione: 2025/05/13 15:47 przez administrator