中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

2012衆議院選挙 比例代表計算式

選挙終わりましたね。下手な事言うと捕まっちゃう(というほどひどいことしなければ問題ないのでしょうけど)期間も終わったし、ちょっと集計して遊んでみましょう。

今回の各党の各地域ごとの得票ちゃんと書いたサイト無かったので

よみうりオンラインより抜き書きしました。中央選管とかにあったのかなぁ。

http://www.yomiuri.co.jp/election/shugiin/2012/kaihyou/yc81.htm

1つ目のテーブル、各党のidと名前

2つめのテーブル各地域のid、名称,議席数

3つめのテーブル各地域における、各党の得票数

4つめのテーブル、ただのカウンター(ドント方式計算のため)CTEでうまく出来るかのテストだったのにうまくいかなかった。

で、以下がソース

declare @党 table
(
id int,
str nvarchar(100)
)

insert into @党 values(1, '民主');
insert into @党 values(2, '自民');
insert into @党 values(3, '未来');
insert into @党 values(4, '公明');
insert into @党 values(5, '維新');
insert into @党 values(6, '共産');
insert into @党 values(7, 'みんな');
insert into @党 values(8, '社民');
insert into @党 values(9, '大地');
insert into @党 values(10, '幸福');
insert into @党 values(11,	'改革');
insert into @党 values(12,	'国民');


declare @地域 table
(
 tiiki int,
 str nvarchar(max),
 giseki int 
)
insert into @地域 values(1, '北海道', 8 )
insert into @地域 values(2, '東北', 14 )
insert into @地域 values(3, '北関東', 20 )
insert into @地域 values(4, '東京', 17 )
insert into @地域 values(5, '南関東', 22)
insert into @地域 values(6, '北陸信越', 11 )
insert into @地域 values(7, '東海', 21 )
insert into @地域 values(8, '近畿', 29 )
insert into @地域 values(9, '中国', 11 )
insert into @地域 values(10, '四国', 6 )
insert into @地域 values(11, '九州', 21 )


Declare @票 table
(
tou int,
tiiki int,
hyou int
)
insert into @票 values(1, 1, 477356)	insert into @票 values(2, 1, 692304)	insert into @票 values(3, 1, 81838)	insert into @票 values(4, 1, 289011)	insert into @票 values(5, 1, 333760)	insert into @票 values(6, 1, 182968)	insert into @票 values(7, 1, 155522)	insert into @票 values(8, 1, 48351)	insert into @票 values(9, 1, 346848)	insert into @票 values(10, 1, 10506)	insert into @票 values(11, 1, 0)	insert into @票 values(12, 1, 0)
insert into @票 values(1, 2, 805709)	insert into @票 values(2, 2, 1238716)	insert into @票 values(3, 2, 391216)	insert into @票 values(4, 2, 398131)	insert into @票 values(5, 2, 725006)	insert into @票 values(6, 2, 256838)	insert into @票 values(7, 2, 306102)	insert into @票 values(8, 2, 160367)	insert into @票 values(9, 2, 0)	insert into @票 values(10, 2, 14825)	insert into @票 values(11, 2, 41587)	insert into @票 values(12, 2, 0)
insert into @票 values(1, 3, 976922)	insert into @票 values(2, 3, 1820116)	insert into @票 values(3, 3, 387625)	insert into @票 values(4, 3, 820358)	insert into @票 values(5, 3, 1169781)	insert into @票 values(6, 3, 367245)	insert into @票 values(7, 3, 787462)	insert into @票 values(8, 3, 118046)	insert into @票 values(9, 3, 0)	insert into @票 values(10, 3, 19795)	insert into @票 values(11, 3, 0)	insert into @票 values(12, 3, 0)
insert into @票 values(1, 4, 1008011)	insert into @票 values(2, 4, 1626057)	insert into @票 values(3, 4, 448689)	insert into @票 values(4, 4, 662743)	insert into @票 values(5, 4, 1298309)	insert into @票 values(6, 4, 484365)	insert into @票 values(7, 4, 762730)	insert into @票 values(8, 4, 136889)	insert into @票 values(9, 4, 0)	insert into @票 values(10, 4, 16620)	insert into @票 values(11, 4, 93194)	insert into @票 values(12, 4, 0)
insert into @票 values(1, 5, 1323048)	insert into @票 values(2, 5, 2020043)	insert into @票 values(3, 5, 477309)	insert into @票 values(4, 5, 810936)	insert into @票 values(5, 5, 1443270)	insert into @票 values(6, 5, 447890)	insert into @票 values(7, 5, 951294)	insert into @票 values(8, 5, 147191)	insert into @票 values(9, 5, 0)	insert into @票 values(10, 5, 20987)	insert into @票 values(11, 5, 0)	insert into @票 values(12, 5, 0)
insert into @票 values(1, 6, 682159)	insert into @票 values(2, 6, 1162095)	insert into @票 values(3, 6, 178403)	insert into @票 values(4, 6, 307138)	insert into @票 values(5, 6, 707497)	insert into @票 values(6, 6, 210219)	insert into @票 values(7, 6, 275399)	insert into @票 values(8, 6, 128443)	insert into @票 values(9, 6, 0)	insert into @票 values(10, 6, 15767)	insert into @票 values(11, 6, 0)	insert into @票 values(12, 6, 0)
insert into @票 values(1, 7, 1321402)	insert into @票 values(2, 7, 1966007)	insert into @票 values(3, 7, 511048)	insert into @票 values(4, 7, 779577)	insert into @票 values(5, 7, 1356970)	insert into @票 values(6, 7, 387461)	insert into @票 values(7, 7, 644087)	insert into @票 values(8, 7, 136316)	insert into @票 values(9, 7, 0)	insert into @票 values(10, 7, 29739)	insert into @票 values(11, 7, 0)	insert into @票 values(12, 7, 0)
insert into @票 values(1, 8, 1173051)	insert into @票 values(2, 8, 2326005)	insert into @票 values(3, 8, 481603)	insert into @票 values(4, 8, 1234345)	insert into @票 values(5, 8, 2999020)	insert into @票 values(6, 8, 732976)	insert into @票 values(7, 8, 635381)	insert into @票 values(8, 8, 133064)	insert into @票 values(9, 8, 0)	insert into @票 values(10, 8, 33509)	insert into @票 values(11, 8, 0)	insert into @票 values(12, 8, 0)
insert into @票 values(1, 9, 570764)	insert into @票 values(2, 9, 1210400)	insert into @票 values(3, 9, 141360)	insert into @票 values(4, 9, 493800)	insert into @票 values(5, 9, 622226)	insert into @票 values(6, 9, 174648)	insert into @票 values(7, 9, 209627)	insert into @票 values(8, 9, 68653)	insert into @票 values(9, 9, 0)	insert into @票 values(10, 9, 14383)	insert into @票 values(11, 9, 0)	insert into @票 values(12, 9, 0)
insert into @票 values(1, 10, 296914)	insert into @票 values(2, 10, 567193)	insert into @票 values(3, 10, 63830)	insert into @票 values(4, 10, 276907)	insert into @票 values(5, 10, 394393)	insert into @票 values(6, 10, 106976)	insert into @票 values(7, 10, 93090)	insert into @票 values(8, 10, 42762)	insert into @票 values(9, 10, 0)	insert into @票 values(10, 10, 8171)	insert into @票 values(11, 10, 0)	insert into @票 values(12, 10, 0)
insert into @票 values(1, 11, 993317)	insert into @票 values(2, 11, 1995521)	insert into @票 values(3, 11, 260994)	insert into @票 values(4, 11, 1043528)	insert into @票 values(5, 11, 1211996)	insert into @票 values(6, 11, 337573)	insert into @票 values(7, 11, 424892)	insert into @票 values(8, 11, 300708)	insert into @票 values(9, 11, 0)	insert into @票 values(10, 11, 31848)	insert into @票 values(11, 11, 0)	insert into @票 values(12, 11, 70847)

;

declare @counter table
(
cnt int
)
insert into @counter values(1)
insert into @counter values(2)
insert into @counter values(3)
insert into @counter values(4)
insert into @counter values(5)
insert into @counter values(6)
insert into @counter values(7)
insert into @counter values(8)
insert into @counter values(9)
insert into @counter values(10)
insert into @counter values(11)
insert into @counter values(12)
insert into @counter values(13)
insert into @counter values(14)
insert into @counter values(15)
insert into @counter values(16)
insert into @counter values(17)
insert into @counter values(18)
insert into @counter values(19)
insert into @counter values(20)

;

with カウンタcte(cnt)as
(
select 1
union all
select cnt+1 from カウンタcte
)


select top 10 * from カウンタcte

declare @議席数 table
(
tou int
)

declare @地域議席数 int
declare @地域id int

DECLARE cur CURSOR FOR

SELECT giseki, tiiki FROM @地域
open cur
FETCH NEXT from cur into @地域議席数, @地域id
WHILE @@FETCH_STATUS = 0
BEGIN
	insert into @議席数
	select top (@地域議席数) tou.id-- tou.str, 党別比例順別得票数.比例票
	from ( select hyou.tou, hyou.hyou / カウンタ.cnt as 比例票 from (select * from @票 where tiiki=@地域id) as hyou,@counter as カウンタ ) as 党別比例順別得票数
	inner join  @党 as tou on tou.id = 党別比例順別得票数.tou
	order by 比例票  desc


	FETCH NEXT from cur into @地域議席数, @地域id
END
close cur
deallocate cur












select tou, t.str as 党名, カウント
from
(
	select tou, count(*)as カウント from @議席数
	group by tou 
) as 集計
inner join @党 as t on t.id =  集計.tou

--inner join  @党 as tou on tou.id = hyou.tou

  党名 カウント
1 民主 30
2 自民 57
3 未来 7
4 公明 22
5 維新 40
6 共産 8
7 みんな 14
8 社民 1
9 大地 1

全国が一区だった場合の計算出している人はちょくちょくいるみたいなので、今の比例代表の仕組みのまま480議席にしてみましょう。

insert into @地域 values(1, '北海道', 21 )
insert into @地域 values(2, '東北', 37 )
insert into @地域 values(3, '北関東', 54 )
insert into @地域 values(4, '東京', 46 )
insert into @地域 values(5, '南関東', 59)
insert into @地域 values(6, '北陸信越', 29 )
insert into @地域 values(7, '東海', 56 )
insert into @地域 values(8, '近畿', 77 )
insert into @地域 values(9, '中国', 29 )
insert into @地域 values(10, '四国', 16 )
insert into @地域 values(11, '九州', 56 )

誤差が出ているところは適当に丸めたので、誤差は気にしないで下さいね。

tou 党名 カウント
1 民主 79
2 自民 143
3 未来 23
4 公明 56
5 維新 102
6 共産 27
7 みんな 38
8 社民 9
9 大地 3

ま、あくまで思考実験なのでこの方が良いとか思っているわけじゃないですよ。

ただこんな割れ方だと政権の行方も大分違うだろうなぁ。

ちなみに全国1区の比例代表の結果とそう違わない値なのが面白くないですね。

http://togetter.com/li/424427

投稿日時 : 2012年12月18日 23:03

コメントを追加

# ルイヴィトン財布コピー 2012/12/19 1:13 http://www.lv-kopi.com/

売れてるからって「天狗」になってる感もないから

# ブランド腕時計 2012/12/19 21:00 http://www.xn--tck0b8af9gsc6c6035d6j1c.com/tag/%e3

どうしても忘れられず、探偵を雇って探してもらおうと思ったこともあるほどの彼。独身か分からないけど……。

# シャネル コピー バッグ 2012/12/20 1:59 http://www.chanelkopi.com/tag/%E3%82%B7%E3%83%A3%E

株式会社ファンデリーは一人でも多くのお客様に健康で楽しい食生活を提案することを通じて、豊かな未来社会に貢献することを目指し2000年に設立されましたファンデリーは日本初である栄養士が直接お客様の自宅まで健康食をお届けする宅配サービス(カウンセリングデリバリー)を行っている企業です。
シャネル コピー バッグ http://www.chanelkopi.com/tag/%E3%82%B7%E3%83%A3%E3%83%8D%E3%83%AB-%E3%82%B3%E3%83%94%E3%83%BC-%E6%99%82%E8%A8%88/

タイトル  
名前  
URL
コメント