t_meisaiは以下の定義で調味料の使用履歴を記録しています。
idint4uniqueな値
date timestampyy/mm/dd
type int41 or 2 or 3
orderint4純粋な順番

typeには塩、砂糖のように固形のものは1、酢、醤油のように液状のものは2、それ以外は3が入ります。
orderはdate毎に使った順番が記録されていきます。

date || type のgroupごとの一番最初に使ったものだけ抽出したのが下のSQLです。
select date || type as key, min(order) from t_meisai group by key

上記の条件に当てはまるレコードのidを抽出したいのですがどうしたらよいのでしょうか?

A 回答 (2件)

>クエリを実行したまま処理が戻りません。



というか、遅いんでしょう(^^;;;


>下のものはgroup by keyのkeyがないのでできませんでした。

うーん、「できませんでした」って書くより、group by句を直したほうが早いですよね?

select id, minorder from t_meisai t1,
(select date, type, min(order) as minorder from t_meisai group by date, type) t2
where t1.date = t2.date and t1.type = t2.type
    • good
    • 0

min(order)が不要だったらこんなので。



select id from t_meisai t1
where exists(
select date || type as key, min(order) from t_meisai t2 group by key
having key = (t1.date || t1.type) )


min(order)も必要ならこんなんで

select id, minorder from t_meisai t1,
(select date, type, min(order) as minorder from t_meisai group by key) t2
where t1.date = t2.date and t1.type = t2.type

この回答への補足

ご回答ありがとうございます。
実は両方ともうまくいきませんでした。

上のものはhaving句のkeyが無効と言われ
having key > having (t2.date || t2.type)にしましたが
クエリを実行したまま処理が戻りません。

下のものはgroup by keyのkeyがないのでできませんでした。

補足日時:2005/04/07 16:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QFC2 で自動的に挿入される Ads by Google の外し方

FC2 で自動的に挿入される Ads by Google の外し方

を教えていただきたく、お願いいたします。

Aベストアンサー

自分のは表示されてないのですがこれの事でしょうか?

環境設定の変更 → ブログの設定 → アカマイの設定 →
→ 高速表示設定(アカマイ利用設定) → 利用しない&広告を表示しない → 「更新」

新着記事に勝手にAds by Googleが(fc2ブログ) フリーソフト万歳
http://zdsoft.blog95.fc2.com/blog-entry-76.html

参考URL:http://zdsoft.blog95.fc2.com/blog-entry-76.html

QASで指定した項目名をGROUP BYやORDER BYで使用する方法。

ただいまSQLの勉強をしています。
タイトルどおりなのですが、ASで指定した項目名をGROUP BYやORDER BYで使用する方法はあるのでしょうか?

CASE文を使用したこちらのSQL文↓で、SELECT文、GROUP BY句、ORDER BY句の中に重複する部分が多く出てしまうのでどうにかすっきりさせたいと思い、独自に調べたり色々と試したのですがわからず、質問させていただきました。

お分かりになる方、いらっしゃいましたらご助言どうぞよろしくお願いいたします。

<SQL文>
SELECT CASE WHEN trancd % 3 = 1 THEN '購入番号(1,4,7,…)の集計'
WHEN trancd % 3 = 2 THEN '購入番号(2,5,8,…)の集計'
ELSE '購入番号(3,6,9,…)の集計'
END AS グループ名称
, sum(suryo) AS 数量合計
FROM tran
GROUP BY CASE WHEN trancd % 3 = 1 THEN '購入番号(1,4,7,…)の集計'
WHEN trancd % 3 = 2 THEN '購入番号(2,5,8,…)の集計'
ELSE '購入番号(3,6,9,…)の集計'
END
ORDER BY CASE WHEN trancd % 3 = 1 THEN '購入番号(1,4,7,…)の集計'
WHEN trancd % 3 = 2 THEN '購入番号(2,5,8,…)の集計'
ELSE '購入番号(3,6,9,…)の集計'
END;

ただいまSQLの勉強をしています。
タイトルどおりなのですが、ASで指定した項目名をGROUP BYやORDER BYで使用する方法はあるのでしょうか?

CASE文を使用したこちらのSQL文↓で、SELECT文、GROUP BY句、ORDER BY句の中に重複する部分が多く出てしまうのでどうにかすっきりさせたいと思い、独自に調べたり色々と試したのですがわからず、質問させていただきました。

お分かりになる方、いらっしゃいましたらご助言どうぞよろしくお願いいたします。

<SQL文>
SELECT CASE WHEN trancd % 3 = 1 THEN '購入...続きを読む

Aベストアンサー

RDBMSは、ここのカテゴリ通り、PostgreSQLですか?
バージョンは?

SQLの勉強中とのことですが、何のためにこんなSQLを作っているのでしょうかね?

別名ですが、内側のクエリで付けた名前であれば、外側のクエリで使用できると思います。

select ・・・ from
(select ・・・ from ・・・) as x -- この中で別名を付けたら、外側で使用可能

QAds by Googleの広告について

アメブロでブログしようと思っています。Ads by Googleの広告は自分で選べますか? それとも自動的に載せるほうが決めるんでしょうか?

Aベストアンサー

選べません。
コンテンツマッチといって、
記事の内容などによって表示される広告が異なります。

Qorder byで並び変えし最大値の項目の抽出方法ついて

すみません。
order byで並び変えし最大値の項目のみ一意で抽出したいのですが

SELECT * from ta order by no,date1,date2;
no | date1 | date2
----+-------+-------
11 | 2008 | 0501
11 | 2008 | 0502
11 | 2008 | 0502
11 | 2008 | 0503
12 | 2008 | 0501
12 | 2008 | 0502
12 | 2008 | 0503
13 | 2008 | 0501
13 | 2008 | 0502
13 | 2008 | 0503
14 | 2008 | 0501

とあった場合、
no,date1,date2のorder by順番で並び変えし

11 | 2008 | 0503
12 | 2008 | 0503
13 | 2008 | 0503
14 | 2008 | 0501

とno項目に対し一つずつだけ出力したい場合どのようにしたらよいのでしょうか?
LIMITとoffsetだと1項目分しか出力されず困っております。
SELECT * from ta where no in (select no from ta group by no limit 1 offset 0) order by no,date1 desc,date2 desc limit 1;

宜しくお願い致します。

すみません。
order byで並び変えし最大値の項目のみ一意で抽出したいのですが

SELECT * from ta order by no,date1,date2;
no | date1 | date2
----+-------+-------
11 | 2008 | 0501
11 | 2008 | 0502
11 | 2008 | 0502
11 | 2008 | 0503
12 | 2008 | 0501
12 | 2008 | 0502
12 | 2008 | 0503
13 | 2008 | 0501
13 | 2008 | 0502
13 | 2008 | 0503
14 | 2008 | 0501

とあった場合、
no,date1,date2のorder by順番で並び変えし

11 | 2008 | 0503
12 | 200...続きを読む

Aベストアンサー

普通のグループ化でよいのでは?

SELECT * FROM (SELECT no,MAX(date1) AS date1,MAX(date2) AS date2 FROM TA GROUP BY no)
ORDER BY no,date1,date2

QAbs by Googleについて教えてください

Abs by Googleについて教えてください。
わたしはGREEというSNSにAmeblo(アメブロ)の記事を転載しています。
アメブロの方にAbs by Googleという広告が載ってしまうのは分かるのですが、
転載先のGREEの方にも一つの記事として、

PR: お客様に合った最適な保険選び・見直しをするなら、
”公式”エジソン生命保険。お客様のお手伝いをさせて頂きます。
Ads by Trend Match

という文章がアップされてしまうのです。
これは、アメブロ同様に勝手に掲載されてしまうのは仕方のないことなのでしょうか、、、
この連動型広告に登録でもしてしまっているのかと退会方法を調べたら、
削除するにはアメブロ自体をやめなければならないような記述でした。

転載先の方だけでいいのですが、広告がでないようにすることはできませんか?

GREEのヘルプでメールを送ったのですが返信が来なくてどうしたらいいのかわかりません。

Aベストアンサー

GREEを使ったことが無いのでどうか解りませんが、
GREEに登録してあるAbebloのがRSSのURLを登録しているのであれば、
AmebloのRSS情報には広告が挿入されるのでGREEの方にも掲載されることになります。
GREEの方が許せばRSSを広告フィルターを通した物を登録すれば表示されなくなります。

フィルターサービスは昔はスマートフィードて言うサイトがあったんだけど・・
今は動作の軽いサイトがあるかは不明です。
RSS フィルター で検索くて探すしかないかな・・f^^;)

ちょと重いですがYahoo! Pipesを試してみるのも手ですが、
Yahoo-pipesの吐くRSSを受け入れてくれるか不明です。
たまに弾かれることがあります。

QUNIQUEをつけたときのINDEXテーブル

テーブル作成時、カラムにUNIQUEをつけると自動でインデックステーブルが作成されますが、このインデックステーブルで、通常のselect検索も早くなるのでしょうか?

具体的には、ユニークなカラムidを持つテーブルtableA

create table tableA( id INTEGER UNIQUE, some_column INTEGER );

を作ったあとで、そのidにあらためて

CREATE INDEX id ON tableA (id);

と、インデックスを張る必要があるのでしょうか。

よろしくお願いします。

Aベストアンサー

SQLの規格としてはUNIQUE制約を指定した時にINDEXを作成するかどうかは決められていませんが(SQL規格にはINDEXの記述がない)、私が知るかぎりはPRIMARY KEY制約、UNIQUE制約を指定した場合はすべてのRDMSでINDEXが暗黙に作成されます。
PostgreSQLも同様です。
ですから、
CREATE INDEX id ON tableA (id);
とする必要はありません。PostgreSQLではエラーになりませんが、Oracleなどでは既に索引が作成されている列に同一の内容で索引を作成しようとするとエラーになります。
暗黙に作成されたINDEXも暗黙に作成されたINDEXも同様に使用されますので速度の向上が見込めます。
後、UNIQUE制約ですが
Oracle→NULLは複数個許可する。暗黙作成される索引にNULLを含めない。
PostgreSQL,MySQL→NULLは複数個許可する。暗黙作成される索引にNULLを含む。
SqlSERVER→NULLは1個のみ許可する。
DB2→NULLを許可しない
と扱いが違うので注意してください。

SQLの規格としてはUNIQUE制約を指定した時にINDEXを作成するかどうかは決められていませんが(SQL規格にはINDEXの記述がない)、私が知るかぎりはPRIMARY KEY制約、UNIQUE制約を指定した場合はすべてのRDMSでINDEXが暗黙に作成されます。
PostgreSQLも同様です。
ですから、
CREATE INDEX id ON tableA (id);
とする必要はありません。PostgreSQLではエラーになりませんが、Oracleなどでは既に索引が作成されている列に同一の内容で索引を作成しようとするとエラーになります。
暗黙に作成されたINDEXも暗黙に作成...続きを読む

QAds by Google が承認されません

FC2ブログをやっています。
Ads by Google を申し込みましたが承認されませんでした。
ブログランキングのクリック誘導メッセージと矢印がダメなのかと思い、過去一ヶ月くらいまでさかのぼって修正しました。
それで再度申し込んでもダメでした。

過去の記事全部を修正しなければだめなのでしょうか?
また、承認されるためには、矢印やランキングバナーの削除以外に、まだなにかあるのでしょうか?
よろしくお願いします。

Aベストアンサー

掲載するページの問題点はどれだけ古くても、他からリンクされてないファイルであっても修正する必要があります。
警告が来たときに悩みます。。。
(審査が通っても後でアカウントを削除、骨折り損です。)

Googleで「google adsense 審査」をキーワードに検索すれば審査時のチェックポイントがいろいろ出てきます。
確認してみてください。

Q|| の意味とは?

CASE WHEN a.image_name1 IS NOT NULL THEN '".BASE_DIR_NAME."' || a.image_dir1||'s'|| a.image_name1";

この中の||とはどういう意味なのでしょうか?
PHP でいう $a.'bcd'.$d みたいなものなのでしょうか?

Aベストアンサー

文字連結です。

QAds by Googleはどう見えますか

自分が見たサイトの商品広告が、他のサイトを開いてもまた表示されます。
Ads by Google広告です。
もし、この広告が出ているURLをTwitter、FacebookなどのSNSにリンク貼付けすると、他人の画面でも全く同じ広告が表示されてしまいますか。
あるいは、その部分は空白になるのでしょうか。開いた人に依り、違う画面が表示されるのでしょうか。
自分の居住地域や購入商品などが分かってしまうので、心配になり質問させて頂きました。よろしくお願いいたします

Aベストアンサー

こんにちは。私の判る範囲でお答えさせていただきます。

質問者さんに最適化した広告が、質問者さんのデバイスに表示されています。
ですので、質問者さんが持っているデバイス(スマホ、ノートPC etc)を人に見せたりしなければ、プライバシーが簡単に漏れることはありません。
大きなサイトさんでは、最適化された広告を好まないユーザ向けの設定をもうけています。
オプトアウトといいます。
下のページでは判りやすく書かれていますので、関心がありましたら読んでみてください
http://facebook.boo.jp/do-not-track-user-with-ad

先の回答者さまに若干補足させていただきますと、グーグル、MSN、FB、Twitter等はデバイスやプラットフォーム(OS、ブラウザの種類)をまたいで同一人とわかる、追跡、最適化するシステムに移行中です。
http://spnews.auone.jp/it/news/?ID=tch_REV201410310008
来年、個人情報の利用に関する法が改正されます。知っておいても損はないと思います。

Qpg_data_seekについて

表内の指定した行に移動する関数と思われるpg_data_seekという関数を使用したいと思っているのですが、

Fatal error: Call to undefined function pg_data_seek() in ~~~ on line 52

となってしまいます。

http://66.102.7.104/search?q=cache:nHqnLP1laDsJ:osaka.cool.ne.jp/rh-riko/PHP_ref/php-postgresql.htm+pg_data_seek&hl=ja&lr=lang_ja

には書かれているのでおそらく関数自体は存在しているようです。何か設定など問題なのかなと思っています。

解決策を知っている方教えていただけますでしょうか?

Aベストアンサー

まず、使用している言語はPHPでよろしいでしょうか。
その前提で書かせていただきます。

PHPのマニュアルを見た限りでは、
他のDBについては、xxx_data_seekという関数があるのですが、
pg_data_seekという関数は見当たりません。
多分、インターネットで検索しても、ほとんど出てこなかったのではないでしょうか。

関数を使う際は、きちんとしたマニュアルをご覧になった方が良いと思います。
(URLを下に書いておきます)
個人の方が作成したページだと、間違えていることもありますし・・・。

具体的に、作成されようとしている処理が分からないのですが、
他の関数で、どうにか実現できないでしょうか。

私が、PHP経験が浅いので自信がないのですが、
見当違いな回答だったらすみません。

参考URL:http://jp.php.net/manual/ja/index.php


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング