Я только начал изучать SQL (в частности, SQLite), и я играл с этими данными.
У каждого персонажа Marvel в этом списке есть рейтинг для каждого атрибута (сила, интеллект, скорость и т. Д.). Я хочу узнать, сколько персонажей имеют каждый атрибут как самый высокий. Например, сколько персонажей имеют силу как их самый большой атрибут?
Мы можем предположить, что если персонаж имеет два или более атрибута в качестве наивысшего значения, этот символ будет учитываться для каждого атрибута.
Результат, который я ожидаю, выглядит примерно так:
best_Attribute COUNT(*)
__________________________________
intelligence a
strength b
speed c
durability d
energy_Projection e
fighting_Skills f
Вот моя попытка:
SELECT COUNT(*),
CASE
WHEN MAX(intelligence, strength, speed, durability, energy_Projection, fighting_Skills) == intelligence THEN "intelligence"
WHEN MAX(intelligence, strength, speed, durability, energy_Projection, fighting_Skills) == strength THEN "strength"
WHEN MAX(intelligence, strength, speed, durability, energy_Projection, fighting_Skills) == speed THEN "speed"
WHEN MAX(intelligence, strength, speed, durability, energy_Projection, fighting_Skills) == durability THEN "durability"
WHEN MAX(intelligence, strength, speed, durability, energy_Projection, fighting_Skills) == energy_Projection THEN "energy_Projection"
WHEN MAX(intelligence, strength, speed, durability, energy_Projection, fighting_Skills) == fighting_Skills THEN "fighting_Skills"
END as "best_Attribute"
FROM marvels
GROUP BY best_Attribute;
Это уродливо, многословно и даже не работает. Вот вывод:
COUNT(*) best_Attribute
__________________________
2 4
3 6
7 7
Есть ли (хороший) способ получить желаемый результат?