私はMySQLデータベースをクエリした経験があり、私はOracleで同じことをする方法を学ぼうとしています。理論的な質問はどれほど難しいですか? DATE_OF_BIRTH、GENDER、RACE、ETHNICITYの列を持つDEMOGRAPHICSテーブルがあるとします。そして、車の異なるメーカー(トヨタ、フォードなど)を列挙する列MAKEを持つCAR表。男性の女性、女性、白人、アジア人、黒人、ヒスパニック、ヒスパニックではない列、2つの年齢層の列(18歳から30歳、50歳から70歳)の列にそれぞれの車種とそれに対応する割合率をリストする統計レポートを作成するにはどうすればよいですか。パーセントは小数点以下2桁まで切り上げる必要があります。これは次のようになります。 enter image description here 類似のクエリへの参照を含め、何か助けていただければ幸いです。 ありがとうございました!統計レポートのPL/SQLクエリ?
0
A
答えて
0
さらに詳しい情報が必要です。 BLACK ASIAN WHITE、< ==は、これらの ヒスパニックではなく、ヒスパニック系< ==は、これらの民族列
0
drop table demographics
drop table car
create table car(MAKE_ID number primary key, MAKE varchar2(30));
create table demographics(DATE_OF_BIRTH date , GENDER varchar2(10), RACE varchar2(30), ETHNICITY varchar2(30), MAKE_ID references car);
--insert into car table
insert into car values(1,'Toyota');
insert into car values(2,'Ford');
insert into car values(3,'GM');
--inserts 1000 rows into the demographics table
insert into demographics
select trunc(sysdate) - level as dob
,case when mod(level,2)=0 then 'MALE' else 'FEMALE' end as gender
,case when mod(level,2)=0 then 'WHITE' else 'BLACK' end as race
,case when mod(level,4)=0 then 'ASIAN'
when mod(level,3)=0 then 'HISPANIC'
when mod(level,2)=0 then 'NOT HISPANIC'
else 'LATINO'
end as ethnicity
,case when mod(level,3)=0 then 3
when mod(level,2)=0 then 2
when mod(level,1)=0 then 1
end as make_id
from dual
connect by level<=1000;
select make
,round((cnt_MAKE/tot_cnt)*100,2) as MALE_PERCENT
,round((cnt_MAKE/tot_cnt)*100,2) as FEMALE_PERCENT
from(
select a.make
,count(case when b.gender ='MALE' then 1 end) as cnt_MALE
,count(case when b.gender ='FEMALE' then 1 end) as cnt_FEMALE
,count(case when b.race ='WHITE' then 1 end) as cnt_WHITE
,count(case when b.ethnicity ='ASIAN' then 1 end) as cnt_ASIAN
,count(case when b.race ='BLACK' then 1 end) as cnt_BLACK
,count(case when b.ethnicity ='HISPANIC' then 1 end) as cnt_HISPANIC
,count(case when b.ethnicity ='NOT HISPANIC' then 1 end) as cnt_NOT_HISPANIC
,count(*) as tot_cnt
from car a
join demographics b
on a.make_id=b.make_id
group by a.make
)
関連する問題
- 1. PLSQLテーブル関数用のV $ SQL統計
- 2. gmailスクリプト(統計レポート)のデプロイ
- 3. WebApp/Servers/Services統計レポート
- 4. Javadoc統計の概要レポートを取得
- 5. solr date統計クエリ
- 6. テーブル統計のサンプルレートのクエリ
- 7. 2sxc - 統計データのクエリ
- 8. SQL Server 2005のクエリ統計
- 9. plsqlでの月間集計
- 10. 対話型レポート・フィルタとplsql関数
- 11. PROCレポート、同じ統計量を持つ複数の列
- 12. テーブルからのPLSQL計算とmonth_between
- 13. ロバスト統計のJava統計パッケージ
- 14. フィールドファセットに基づいて統計を計算するSolrJクエリ
- 15. クエリ/レポート作成層設計の質問(DDD/CQRS)
- 16. csv/excelレポートのSQLクエリで合計/行を作成する
- 17. ユーザー統計。ログインのIPとタイムスタンプ:統計の計算方法
- 18. ホリスティックSQLクエリ(Oracle PLSQL内)およびUX
- 19. 計算統計は
- 20. Gearman - 計算統計
- 21. 統計集計algolia
- 22. ヘーゼルキャストマップの統計
- 23. エクステンションウェブサイトの統計
- 24. Branch.ioの統計
- 25. NHibernateの統計
- 26. Androidのクエリのバッテリー統計のコンテキストの問題
- 27. SQL Serverの統計計算
- 28. 計算在庫をレポートとしてSQLクエリ
- 29. Gatlingレポートの統計を定常状態に制限する方法
- 30. HeidiのSQLコマンド統計情報で特定のクエリを取得
の下に落ちているRACE列の下に落ちているの返信ありがとうございます! WHITE、ASIAN、BLACKはRACE、HISPANIC、HISPANICではなくHISPANICです。なぜあなたは最初に両方のテーブルをドロップしたのですか?両方のテーブルに何千ものリスティングがあるとします.1つ1つずつ新しいテーブルに挿入するのは効率的ではありません。 – icittar
ドロップは不要ですが、スキーマ内にdemographicsという名前のテーブルがすでにあるため、削除しました –