---- ----------
1/1 深田恭子
2/1 長谷川京子
3/1 伊東美咲
3/2 長谷川京子
3/3 松下奈緒
3/4 伊東美咲
3月1日以降に、初めて登場した人は何人か?
を求めるSQLを書ける方、先着1名様、100pt贈呈します。
結果は’2’ (伊東美咲と松下奈緒の2名。長谷川京子は3月1日以前にも登場しているのでカウントから除外)
下記2本、いずれもダメでした。
SELECT COUNT(`name`) FROM table WHERE NOT EXISTS (SELECT `name` FROM table WHERE `date` < ’2005-03-01’);
SELECT COUNT(`name`) FROM table WHERE `name` NOT IN (SELECT `name` FROM table WHERE `date` < ’2005-03-01’);
URLはダミーです。
DBが分からないのでORACLE版ですが…
select count(distinct name) from table a
where not exists (select ’X’ from table b where date < ’2005/03/01’ and a.name = b.name)
http://www.hatena.ne.jp/1126596476
人力検索はてな - date name ---- ---------- 1/1 深田恭子 2/1 長谷川京子 3/1 伊東美咲 3/2 長谷川京子 3/3 松下奈緒 3/4 伊東美咲 3月1日以降に、初めて登場した人は何人か? を求めるSQL..
select count(*)
from (select min(date) min_date, name
from table
group by name) tmp_tbl
where tmp_tbl.min_date > to_date(’2005-03-01’, ’YYYY-MM-DD’) ;
;
このSQL文で求められると思います。
申し訳ありませんが、エラーでした。
MySQL server version for the right syntax to use near ’select min(`date`) min_date, ...
phpMyAdminのSQL照会だからでしょうか...?
ありがとうございます。
SELECT COUNT(DISTINCT ’name’) FROM table WHERE ’name’ NOT IN (SELECT DISTINCT ’name’ FROM table WHERE ’date’ < ’2005-03-01’;
DISTINCTのCOUNTが出来ない処理系だと駄目なので、そーいう場合はDISTINCT ’name’のレコード数を使えばいいかと
select sum(1) - (select sum(1) from(
SELECT sum(1)
FROM tabl a
WHERE (((a.date)<#3/1/2005#)) group by a.name ))
from ( SELECT sum(1)
FROM tabl b group by b.name )
どのSQLかかかれてなかったので、 とりあえず ACCESSで 確認しました。
tableは tabl としてあります。
皆さんありがとうございます。
MySQLというかphpMyAdminがダメなんですかね...?
SELECT count(distinct `name`) FROM table WHERE `date` >= ’2005-03-01’
distinctで重複除外できます。
あと、不等号違いますね。
結果3で不正解
Yahoo! JAPAN
あー。連投です。申し訳ありません。
例にしてるのは、NOT EXISTSで3/1以前を除外しようとしたのですね。。よく読んでなかった。ごめんなさい
SELECT COUNT(`name`) FROM (SELECT distinct `name` FROM table WHERE `date` < ’2005-03-01’);
http://www.hatena.ne.jp/1126596476#
人力検索はてな - date name ---- ---------- 1/1 深田恭子 2/1 長谷川京子 3/1 伊東美咲 3/2 長谷川京子 3/3 松下奈緒 3/4 伊東美咲 3月1日以降に、初めて登場した人は何人か? を求めるSQL..
これでどうでしょう
SELECT count(distinct ’name’) FROM ’table’
WHERE ’name’ NOT IN (SELECT ’name’ FROM ’table’ WHERE ’date’ < ’2005-03-01’)
皆さんありがとうございます。
MySQLだからダメのようですね。
下記1、2ともに○ですが、3にしたとたんエラーです。
1.
select * from table where name not in (’伊東美咲’)
2.
select name from table
3.
select * from table where name not in (
select name from table
)
Excite エキサイト
■テスト
create table `table` (`date` date, `name` varchar(10));
insert into `table` values(’2005/01/01’,’a’);
insert into `table` values(’2005/02/01’,’b’);
insert into `table` values(’2005/03/01’,’c’);
insert into `table` values(’2005/03/02’,’b’);
insert into `table` values(’2005/03/03’,’d’);
insert into `table` values(’2005/03/04’,’c’);
■これで出来ます
select count(*) from (select distinct `name` from `table` where `date` >= ’2005/03/01’) as x;
----
MySQLってサブクエリに別名が必須だったのですね。。。。
ありがとうございます。
しかし、こちらではなぜか通りません。
上記のselect...も
下記のようなのさえ通りません。
select count(*) from( select `name` from `table`) as `x`;
MySQLのメッセージ -->
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ’select `name` from `table`) as `x`’ at line 1
嫌になってきましたね(^^; 皆さんすみません。
【楽天市場】Shopping is Entertainment! : インターネット最大級の通信販売、通販オンラインショッピングコミュニティ
orz。。。。
>3月1日以前にも登場しているのでカウントから除外
質問良く読もう、、、
select count(*) from(
select distinct `name` from `table`
where `name` not in(select `name` from `table` where `date` < ’2005/03/01’)) as x;
count(*)
--------------------+
2
select @@version
@@VERSION
----------+
4.1.12-log
回答7についている、質問者コメント内の3番が通らないのはバージョンのせいなのかな
あ、ちなみに、
ここのSQL普通にコピーペーストすると、シングルクォートが全角になっているので使えません。半角に置き換えてください。
select @@version
4.0.22-standard-log
この程度のが通らないDBだった、ということですかね(:_;)
やっと閲覧できました。
DBはMySQLですが、汎用的には無理なんですかね... いかにもありそうなパターンだと思ってました。
結果、エラーでした。
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ’exists (select ’X’ ...
ありがとうございました。