mysql:13068
From: "Yoshio Kawano" <"Yoshio Kawano" <kawano@xxxxxxxxxx>>
Date: Mon, 5 Jun 2006 17:07:03 +0900
Subject: [mysql 13068] Re: グループ化された情報の TOP 10を取得する方法
回答、ありがとうございました。 度重なる、説明不足にて、誠に申し訳けありません。 名称1,2,3に登録されている名称は、私が皆様に情報のグループ構成について説 明する為に、勝手に付けた情報です。 申し訳けありませんでした。 実際に名称1,2,3に登録される名称は、色々な単語です。 例えば、 名称1=ジョン,名称2=F,名称3=ケネディ 名称1=松下,名称2=電気,名称3=パナソニック 名称1=松下,名称2=電気,名称3=ナショナル 名称1=松下,名称2=冷蔵,名称3=商品名 とか、何かしら関係のある名称群が登録されております。 それを、名称1+名称2をグループとして、それぞれのTOP10を抽出する方法を模 索しております。 ----- Original Message ----- From: "F.Y" <fumi_sby@xxxxxxxxxx> To: <ml@xxxxxxxxxx> Sent: Monday, June 05, 2006 4:18 PM Subject: [mysql 13066] Re: グループ化された情報の TOP 10を取得する方法 > 名称1の取り得る値が限られているなら、最近出た順位出すユーザ変数使ってみ > るのも一興。 > 名称3のハイフンの後ろが順位を示すなら、substring(名称3, instr(名称3, '-') > + 1) > で順位が取り出せる。 > 名称1の取り得る値が不明で、名称3が順位を示さない場合のヒント。 > select kcode, kseiseki, a1 from ( > select kcode, kseiseki, if(kcode <> @chk, @r1 := 1, @r1 := (@r1 + 1)) as > a1, (@chk := kcode) as a2 from kdata order by kcode, kseiseki > ) as t0 > where a1 < 11; > サブクエリにしないとならんところが美しくない…。 > げーじつかぼしゅうちう > > --- Yoshio Kawano <kawano@xxxxxxxxxx> からのメッセージ: > > 説明に不備があり、申し訳けありませんでした。 > > > > データに登録されている値は、0〜99999のある計算結果から求められた > 値であ > > ります。 > > その為、1〜nを順位を示した番号ではありません。データ(順位)と表現 > してしま > > う事で、余計に混乱を招く結果となってしまい、申し訳けありませんでした > 。 > > > > データに登録されている値で、最小のものから10件を取得したいと言う意味 > でした。 > > > > ----- Original Message ----- > > From: "F.Y" <fumi_sby@xxxxxxxxxx> > > To: <ml@xxxxxxxxxx> > > Sent: Monday, June 05, 2006 2:56 PM > > Subject: [mysql 13063] Re: グループ化された情報の TOP > > 10を取得する方法 > > > > > > > 意味わがんね。 > > > > > > where 順位 < 11 > > > > > > でダメな理由って何? > > > > > > --- Yoshio Kawano <kawano@xxxxxxxxxx> からのメッセージ: > > > > お世話になっております。kawaと申します。 > > > > > > > > SQL文の組み立てで困っております。ご教示、お願い致します。 > > > > > > > > 【内容】 > > > > > > グループ化した情報のTOP10を取得するSQL文を作成したい。 > > > > > > > > > > 下記の情報が、DBに登録されているとします。その場合、(名称1+名称2 > > > )のグ > > > > > > ループの中で、データが一番、高い方(1が一番高い)から10レコード抜出 > > > す。 > > > > > > > > 名称1 名称2 名称3 データ(順位) > > > > A A1 A1-1 1 > > > > A A1 A1-2 2 > > > > A A1 A1-3 3 > > > > A A1 A1-4 4 > > > > A A1 A1-5 5 > > > > A A1 A1-6 6 > > > > A A1 A1-7 7 > > > > A A1 A1-8 8 > > > > A A1 A1-9 9 > > > > A A1 A1-10 10 > > > > A A1 A1-11 11 > > > > A A1 A1-12 12 > > > > A A2 A2-1 1 > > > > A A2 A2-2 2 > > > > B B1 B1-1 1 > > > > B B1 B1-2 2 > > > > B B1 B1-3 3 > > > > B B2 B2-1 4 > > > > B B2 B2-1 5 > > > > > > > > SQL文を実行すると、下記の様な情報を取得したいと思っております。 > > > > 名称1 名称2 名称3 データ > > > > A A1 A1-1 1 > > > > A A1 A1-2 2 > > > > A A1 A1-3 3 > > > > A A1 A1-4 4 > > > > A A1 A1-5 5 > > > > A A1 A1-6 6 > > > > A A1 A1-7 7 > > > > A A1 A1-8 8 > > > > A A1 A1-9 9 > > > > A A1 A1-10 10 > > > > A A2 A2-1 1 > > > > A A2 A2-2 2 > > > > B B1 B1-1 1 > > > > B B1 B1-2 2 > > > > B B1 B1-3 3 > > > > B B2 B2-1 4 > > > > B B2 B2-1 5 > > > > > > > > ※:下記の情報は、TOP10以下の情報なので、切り捨てたい。 > > > > A A1 A1-11 11 > > > > A A1 A1-12 12 > > > > > > > > 【テーブル構成】 > > > > テーブル名 =info > > > > 項目 =名称1 Varchar > > > > 名称2 Varchar > > > > 名称3 Varchar > > > > データ int > > > > > > > > 【自分で作成してみた結果】 > > > > > > 解らないなりにも、自分で作成してみました。しかし、結果は、思惑の通 > > > りには行 > > > > きませんでした。 > > > > > > > > >select * top 10 from info group by 名称1,名称2 order by > > データ; > > > > > > > > 【mySQL】 > > > > 4.0.26 > > > > > > > > 以上、宜しくお願い致します。 > > > > > > > > > > > > > > > > > > -------------------------------------- > > > Let's start Yahoo! Auction - Free Campaign Now! > > > http://pr.mail.yahoo.co.jp/auction/ > > > > > > > > > > > > > > -------------------------------------- > Let's start Yahoo! Auction - Free Campaign Now! > http://pr.mail.yahoo.co.jp/auction/ > >
@ 13062 2006-06-05 14:49 ["Yoshio Kawano" <kaw] グループ化された情報のTOP10を取得する方法 13063 2006-06-05 14:56 ┗["F.Y" <fumi_sby@xxxx] 13064 2006-06-05 15:48 ┗["Yoshio Kawano" <kaw] 13065 2006-06-05 15:47 ┣[遠藤 俊裕 <endo@xxxx] 13067 2006-06-05 16:48 ┃┗["Yoshio Kawano" <kaw] 13066 2006-06-05 16:18 ┗["F.Y" <fumi_sby@xxxx] -> 13068 2006-06-05 17:07 ┗["Yoshio Kawano" <kaw] 13069 2006-06-05 17:26 ┗["F.Y" <fumi_sby@xxxx] 13075 2006-06-06 02:05 ┗["Yoshio Kawano" <kaw]