Я изучаю SQL и поставил, казалось бы, простую задачу. У меня есть список вымышленных людей, которым был присвоен рейтинг интеллекта от 1 (немного нечетко) до 5 (Эйнштейн, берегись!), И чей пол указан:
name gender intelligence
Bob Male 4
Jane Female 5
Gary Male 1
Linda Female 2
Stan Male 2
Barb Female 4
... list truncated...
Что я хотел бы это отчет, «для каждого уровня интеллекта, сколько мужчин и сколько женщин? Для выборки я ищу что-то вроде этого:
Intelligence Male Female
1 1 0
2 1 1
3 0 0
4 1 1
5 0 1
Это достаточно просто, чтобы придумать список каждого уровня интеллекта:
SELECT DISTINCT(intelligence) from table ORDER BY intelligence;
Теперь моя универсальная программистская сторона советует построить al oop вокруг этого, но это кажется неправильным и (по-видимому) непростым. Или, по крайней мере, недостаточно просто для моих новичков. Любые предложения о том, как выполнить sh это? Действительно ли это сложнее, чем я думаю? Я узнал об основах запросов - IN, LIKE, HAVING, CASE, вложенный SELECT, et c.
Моя более общая цель - иметь возможность отвечать на такие вопросы, как «Для каждого типа X, найденного в таблице, сколько существует каждого типа Y?»