-- -- Database: DuckDB 0.8.1 -- -- You can run this at: https://shell.duckdb.org/ -- -- Source for my `titanic_casualties.csv`: -- -- * https://en.wikipedia.org/wiki/Sinking_of_the_Titanic#Casualties_and_survivors -- DROP TABLE IF EXISTS titanic_deaths; CREATE TABLE titanic_deaths AS SELECT * FROM read_csv_auto('https://gist.githubusercontent.com/sacundim/73bd069669edaca11e21b9f25aaa5309/raw/13aba76b286759ef055435f73606b876e875226f/titanic_casualties.csv'); SELECT Category, sum("Number onboard") AS "Number onboard", 100.0 * sum("Number onboard") / (SELECT sum("Number onboard") FROM titanic_deaths) AS "% of onboard", sum("Number lost") AS "Number lost", 100.0 * sum("Number lost") / (SELECT sum("Number lost") FROM titanic_deaths) AS "% of total lost", 100.0 * sum("Number lost") / sum("Number onboard") AS "% of group lost" FROM titanic_deaths GROUP BY Category ORDER BY "% of group lost" DESC; -- -- Result: -- -- ┌──────────────┬────────────────┬────────────────────┬─────────────┬────────────────────┬───────────────────┐ -- │ Category ┆ Number onboard ┆ % of onboard ┆ Number lost ┆ % of total lost ┆ % of group lost │ -- ╞══════════════╪════════════════╪════════════════════╪═════════════╪════════════════════╪═══════════════════╡ -- │ Crew ┆ 908 ┆ 40.827338129496404 ┆ 696 ┆ 45.97093791281374 ┆ 76.65198237885463 │ -- │ Third Class ┆ 706 ┆ 31.744604316546763 ┆ 528 ┆ 34.87450462351387 ┆ 74.78753541076487 │ -- │ Second Class ┆ 285 ┆ 12.81474820143885 ┆ 167 ┆ 11.030383091149274 ┆ 58.59649122807018 │ -- │ First Class ┆ 325 ┆ 14.613309352517986 ┆ 123 ┆ 8.124174372523118 ┆ 37.84615384615385 │ -- └──────────────┴────────────────┴────────────────────┴─────────────┴────────────────────┴───────────────────┘ SELECT Category, Passengers, sum("Number onboard") AS "Number onboard", 100.0 * sum("Number onboard") / (SELECT sum("Number onboard") FROM titanic_deaths) AS "% of onboard", sum("Number lost") AS "Number lost", 100.0 * sum("Number lost") / (SELECT sum("Number lost") FROM titanic_deaths) AS "% of total lost", 100.0 * sum("Number lost") / sum("Number onboard") AS "% of group lost" FROM titanic_deaths GROUP BY Category, Passengers ORDER BY "% of group lost" DESC; -- -- Result: -- -- ┌──────────────┬────────────┬────────────────┬────────────────────┬─────────────┬─────────────────────┬────────────────────┐ -- │ Category ┆ Passengers ┆ Number onboard ┆ % of onboard ┆ Number lost ┆ % of total lost ┆ % of group lost │ -- ╞══════════════╪════════════╪════════════════╪════════════════════╪═════════════╪═════════════════════╪════════════════════╡ -- │ Second Class ┆ Men ┆ 168 ┆ 7.553956834532374 ┆ 154 ┆ 10.171730515191545 ┆ 91.66666666666667 │ -- │ Third Class ┆ Men ┆ 462 ┆ 20.77338129496403 ┆ 387 ┆ 25.561426684280054 ┆ 83.76623376623377 │ -- │ Crew ┆ Men ┆ 885 ┆ 39.7931654676259 ┆ 693 ┆ 45.77278731836196 ┆ 78.30508474576271 │ -- │ First Class ┆ Men ┆ 175 ┆ 7.868705035971223 ┆ 118 ┆ 7.793923381770146 ┆ 67.42857142857143 │ -- │ Third Class ┆ Children ┆ 79 ┆ 3.552158273381295 ┆ 52 ┆ 3.4346103038309117 ┆ 65.82278481012658 │ -- │ Third Class ┆ Women ┆ 165 ┆ 7.419064748201439 ┆ 89 ┆ 5.878467635402906 ┆ 53.93939393939394 │ -- │ First Class ┆ Children ┆ 6 ┆ 0.2697841726618705 ┆ 1 ┆ 0.06605019815059446 ┆ 16.666666666666668 │ -- │ Second Class ┆ Women ┆ 93 ┆ 4.181654676258993 ┆ 13 ┆ 0.8586525759577279 ┆ 13.978494623655914 │ -- │ Crew ┆ Women ┆ 23 ┆ 1.0341726618705036 ┆ 3 ┆ 0.19815059445178335 ┆ 13.043478260869565 │ -- │ First Class ┆ Women ┆ 144 ┆ 6.474820143884892 ┆ 4 ┆ 0.26420079260237783 ┆ 2.7777777777777777 │ -- │ Second Class ┆ Children ┆ 24 ┆ 1.079136690647482 ┆ 0 ┆ 0 ┆ 0 │ -- └──────────────┴────────────┴────────────────┴────────────────────┴─────────────┴─────────────────────┴────────────────────┘