私は次のようなテーブルを持っています:
DATE ITEMS CLASS CATEGORY
---------------------------------------------------------
2016-10-01 17915 Red Apartment
2016-10-01 39246 Red Complex
2016-10-01 4376 Blue Apartment
2016-10-01 12668 Blue Complex
2016-10-01 513 Yellow Apartment
2016-10-01 23271 Yellow Complex
このテーブルに、CLASSでグループ化し、一方の値を他方のパーセンテージとして計算する別の列を追加したいと思います。たとえば、上記の場合、Class = Redとマークされた2つの行について、Apartmentカテゴリ(17915)のItemsの値を取得し、Complexカテゴリ(39246)のItemsの値のパーセンテージとして計算します。 )、これは49.64%、つまり約50%になります。
したがって、上記のテーブルに適用されたクエリは、次のような出力テーブルを生成するはずです。
DATE ITEMS CLASS CATEGORY OCCUPANCY
--------------------------------------------------------------------------
2016-10-01 17915 Red Apartment 17915 * 100 / 39246
2016-10-01 39246 Red Complex null
2016-10-01 4376 Blue Apartment 4376 * 100 / 12668
2016-10-01 12668 Blue Complex null
2016-10-01 513 Yellow Apartment 513 * 100 / 23271
2016-10-01 23271 Yellow Complex null
それらの操作ではなく、実際の値です。これに対するクエリはどのようになりますか?GROUP BY句のバリエーションを試しましたが、グループ化した後、ある行を次の行と比較するものは考えられません。
自己結合と結合を使用できます
select a.DATE, a.ITEMS, a.CLASS, a.CATEGORY, (a.ITEMS *100)/ b.ITEMS AS OCCUPANCY
from my_table as a
inner join my_table as b on a.class = b.classe
wheer a.CATEGORY = 'Apartment'
AND b.CATEGORY = 'Complex'
UNION
SELECT DATE, ITEMS, CLASS, CATEGORY, NULL
FROM my_table
where CATEGORY = 'Complex'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加