В одном (здесь без имени) механизм видеоигры, с которым я работал, они переписали инструмент образцовый экспорта (вещь, которая поворачивается язык майя сетка во что-то игровые загрузки) так, чтобы вместо того, чтобы просто испустить данные, это на самом деле испустило бы точный поток микрокоманд, которые будут необходимы представить ту конкретную модель. Это использовало генетический алгоритм для нахождения того, который будет работать в минимальном количестве циклов. То есть формат данных для данной модели был на самом деле отлично оптимизированной подпрограммой для рендеринга просто той модели. Так, рисование сетки на экран означало загружать его в память и переходить в него.
(Это не было для ПК, а для консоли, которая имела векторную единицу, отдельную и параллельную ЦП.)
This should do it (in Oracle) without needing a self join
SELECT name
, sum( case results when '1' then 1 else 0 end ) as countA
, sum( case results when '2' then 1 else 0 end ) as countB
from table
where results IN ( '1', '2' )
group by
name
Вы можете использовать самостоятельное соединение следующим образом
select a.col_1, a.countA, b.countB from table a, table b
where a.col_1 = b.col_1 and a.results='1' and b.results='2'
SELECT name, count(appearance) as countA, null AS countB from table where results = '1'
UNION ALL
SELECT name, null AS countA, count(appearance) as countB from table where results = '2'
SELECT `table`.name, countA, countB
FROM tab
LEFT OUTER JOIN
(SELECT name, count(appearance) as countA from `table` where result = '1' group by name) as tmp1
ON `table`.name = tmp1.name
LEFT OUTER JOIN
(SELECT name, count(appearance) as countB from `table` where result = '2' group by name) as tmp2
ON `table`.name = tmp2.name;