はじめに
データベースの醍醐味は、データをいろいろいじってみることで自分で想像だにしなかったことが見えてくること、だと思っています。
前回の文書は、投票数順、レーベル別順、年代別順、と投票順に並べてみたものでした。
この文書は、ちょっと視点をかえて、「どなたとどなたが同じラノベに投票したか」に焦点をあててみるものです。
投票された方、投票された方のフォロワーの方々、にしか面白くない文書になりそうな雰囲気がしますが…どうでしょうか…
前回同様、表を作るのに使ったSQLも記載していきます。
自己結合ってこうやって使うんだなあと思って頂ければいいかなと思います。
自己結合については、自己結合の使い方がよい文書ではないかと思います。
※ミックさんの文書はお勧めです。
本題
ラノベオールタイムベストの基本ルールは、1人が10のライトノベルに投票する、でした。
ある方とある方が同じライトノベルに投票した…それも数が多いほど、そのお二方の趣向は似ていると思って良いと考えられるでしょう。
最初に、同じライトノベルに投票した数が多かった方々のご紹介です。
概要
5つ以上同じラノベに投票した方々の表です。同じラノベに投票した数順に並び替えています。
同じラノベに投票した数が多いほど趣向が似ているかもしれません。
ちなみに、1つ以上同じラノベに投票した方々の組み合わせ数は以下の通りです。
投票したラノベが5つ、6つ、7つ被るのは相当すごいと思います。
ライトノベルオールスターに参加された人数は197人でした。
ルールにのっとって10のラノベに投票された方で、投票したラノベが他の方と完全にかぶらない方は一人もいらっしゃいませんでした。
同様に、1つしかかぶらなかった方は、6人でした。
8割近くの方々には「3つ以上同じラノベを選んだ方」が1人はいらっしゃるかなと思います。
続きを読む
データベースの醍醐味は、データをいろいろいじってみることで自分で想像だにしなかったことが見えてくること、だと思っています。
前回の文書は、投票数順、レーベル別順、年代別順、と投票順に並べてみたものでした。
この文書は、ちょっと視点をかえて、「どなたとどなたが同じラノベに投票したか」に焦点をあててみるものです。
投票された方、投票された方のフォロワーの方々、にしか面白くない文書になりそうな雰囲気がしますが…どうでしょうか…
前回同様、表を作るのに使ったSQLも記載していきます。
自己結合ってこうやって使うんだなあと思って頂ければいいかなと思います。
自己結合については、自己結合の使い方がよい文書ではないかと思います。
※ミックさんの文書はお勧めです。
本題
ラノベオールタイムベストの基本ルールは、1人が10のライトノベルに投票する、でした。
ある方とある方が同じライトノベルに投票した…それも数が多いほど、そのお二方の趣向は似ていると思って良いと考えられるでしょう。
最初に、同じライトノベルに投票した数が多かった方々のご紹介です。
概要
- 参加者数 : 197人
- 有効投票数 : 1776
- 1人あたりの平均投票数 : 9
5つ以上同じラノベに投票した方々の表です。同じラノベに投票した数順に並び替えています。
同じラノベに投票した数が多いほど趣向が似ているかもしれません。
SELECT a1.twitter
, a2.twitter
, COUNT(*)
FROM lightnovel.alltimebest a1
INNER JOIN lightnovel.alltimebest a2
ON a1.isbn = a2.isbn
WHERE a1.twitter <> a2.twitter
AND a1.twitter < a2.twitter
GROUP BY a1.twitter
, a2.twitter
HAVING COUNT(*) >= 5
ORDER BY COUNT(*) DESC
, a1.twitter
ちなみに、1つ以上同じラノベに投票した方々の組み合わせ数は以下の通りです。
| 同じラノベに投票した数 | 同じラノベに投票した方の組み合わせ数 |
| 7 | 1 |
| 6 | 5 |
| 5 | 19 |
| 4 | 72 |
| 3 | 258 |
| 2 | 907 |
| 1 | 3704 |
投票したラノベが5つ、6つ、7つ被るのは相当すごいと思います。
SELECT count
, COUNT(*)
FROM (
SELECT a1.twitter
, a2.twitter
, COUNT(*)
FROM lightnovel.alltimebest a1
INNER JOIN lightnovel.alltimebest a2
ON a1.isbn = a2.isbn
WHERE a1.twitter <> a2.twitter
AND a1.twitter < a2.twitter
GROUP BY a1.twitter
, a2.twitter
HAVING COUNT(*) >= 1
) AS t
GROUP BY count
ORDER BY COUNT(*)
;
ライトノベルオールスターに参加された人数は197人でした。
ルールにのっとって10のラノベに投票された方で、投票したラノベが他の方と完全にかぶらない方は一人もいらっしゃいませんでした。
SELECT twitter
, COUNT(*)
FROM lightnovel.alltimebest
WHERE twitter IN ( SELECT DISTINCT twitter
FROM lightnovel.alltimebest
WHERE twitter NOT IN (
SELECT twitter
FROM (
SELECT a1.twitter
, COUNT(*)
FROM lightnovel.alltimebest a1
INNER JOIN lightnovel.alltimebest a2
ON a1.isbn = a2.isbn
WHERE a1.twitter <> a2.twitter
GROUP BY a1.twitter
, a2.twitter
HAVING COUNT(*) >= 1
) AS t1
)
)
GROUP BY twitter
HAVING COUNT(*) >= 10 ;
同様に、1つしかかぶらなかった方は、6人でした。
SELECT twitter
, COUNT(*)
FROM lightnovel.alltimebest
WHERE twitter IN ( SELECT DISTINCT twitter
FROM lightnovel.alltimebest
WHERE twitter NOT IN (
SELECT twitter
FROM (
SELECT a1.twitter
, COUNT(*)
FROM lightnovel.alltimebest a1
INNER JOIN lightnovel.alltimebest a2
ON a1.isbn = a2.isbn
WHERE a1.twitter <> a2.twitter
GROUP BY a1.twitter
, a2.twitter
HAVING COUNT(*) >= 2
) AS t1
)
)
GROUP BY twitter
HAVING COUNT(*) >= 10 ;
同様に、2つしかかぶらなかった方は、24人でした。8割近くの方々には「3つ以上同じラノベを選んだ方」が1人はいらっしゃるかなと思います。
続きを読む