SQL質疑応答スレ 18問目

1NAME IS NULL2018/01/04(木) 22:12:22.14ID:???
このスレは
「こういうことをやりたいんだけどSQLでどう書くの?」
「こういうSQLを書いたんだけどうまく動きません><」
などの質問を受け付けるスレです。

SQLという言語はISOによって標準化されていますが
この標準を100%実装したDBMSは存在せず、
また、DBMSによっては標準でない独自の構文が
追加されていることもあります。

質問するときはDBMS名を必ず付記してください。

【質問テンプレ】
・DBMS名とバージョン
・テーブルデータ
・欲しい結果
・説明

前スレ:
SQL質疑応答スレ 17問目
https://mevius.5ch.net/test/read.cgi/db/1468157341/

2NAME IS NULL2018/01/04(木) 22:13:25.04ID:???

3NAME IS NULL2018/01/04(木) 22:14:28.52ID:???
よくある質問1

(問)
ID | DATE     | DATA
--+----------+-----
1 | 2007-11-11 | aaa
2 | 2007-11-11 | bbb
1 | 2007-11-10 | ccc
3 | 2007-11-12 | ddd
3 | 2007-11-11 | eee
4 | 2007-11-10 | fff
1 | 2007-11-12 | ggg

このようなテーブルから、下記のように

1 | 2007-11-12 | ggg
3 | 2007-11-12 | ddd
2 | 2007-11-11 | bbb
4 | 2007-11-10 | fff

各idに対して最新の1件だけ抽出するSQLの書き方を教えてください。

(答)
select A.ID,
    A.DATE,
    A.DATA
from TableName A
   inner join
   (select ID, max(DATE) as MAX_DATE
    from TableName
    group by ID
   ) B
   on A.ID = B.ID
   and A.DATE = B.MAX_DATE
;

4NAME IS NULL2018/01/04(木) 22:15:39.02ID:???
よくある質問2

(問)
key   data
----------------
1     a
1     a
1     b
1     b
1     a
2     b
2     a
2     a

というテーブルから

key   a   b
--------------------
1    3   2
2    2   1

というExcelのピボットの様なデータを取得したいのですが、どういうSQLになりますか?
a,bというのは固定なので、仮にcというデータがあっても無視して構いません。

(答)
select key,
    SUM(CASE data WHEN 'a' THEN 1 END) AS a,
    SUM(CASE data WHEN 'b' THEN 1 END) AS b
FROM table
GROUP BY key
ORDER BY key
;

5NAME IS NULL2018/01/04(木) 22:16:40.08ID:???
よくある質問3

(問)
ID HOGE
01 A
01 B
01 C
02 A
03 B

HOGEをAもBもCも持っている、ID:01だけ取り出すにはどうすればよかですか

(答1)
select id
FROM TableName
WHERE hoge in ('A','B','C')
GROUP BY id
HAVING count(DISTINCT hoge) = 3
;

(答2)
select *
from TableName T1
where not exists (select *
         from (values 'A', 'B', 'C') T2 (HOGE)
         where not exists (select *
                  from TableName T3
                  where T1.ID = T3.ID
                  and T2.HOGE = T3.HOGE
                  )
         )
;
※valuesの部分(Table Value Constructor)はDBMSによって文法がかなり違うので注意

6NAME IS NULL2018/01/04(木) 22:17:39.88ID:???
よくある質問4

(問)
列の数が可変な問合せはどう書きますか?

(答)
標準SQLでは書けません。
pivotという機能を搭載したDBMSなら一見書けそうですが実はやっぱり書けません。
Oracle 11g以降でpivot xmlというキーワードを使用すれば一応可変っぽくはなります。
が、素直にプロシージャを書くかアプリケーションで処理したほうが良いでしょう。

SQL Serverのpivot(2005以降)
http://msdn.microsoft.com/ja-jp/library/ms177410.aspx

Oracleのpivot(11g以降)
http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/statements_10002.htm#CHDCEJJE
http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html

7NAME IS NULL2018/01/04(木) 22:48:11.80ID:???
ダメだ
ブロック条件が厳しすぎる
誰か残りのFAQを貼ってくれ

8NAME IS NULL2018/01/05(金) 02:46:10.18ID:???
よくある質問5

(問)
年月(YYYYMM)を指定し、その年月に対応する年月日を取得したい

 例:201006を指定したら、以下の結果を得たい

   20100601
   20100602
    ・
    ・
    ・
   20100630

(答)
SQLでは存在しないデータを生成することはできません。
この問いの場合は素直にカレンダーテーブルを用意しましょう。

9NAME IS NULL2018/01/05(金) 02:47:19.49ID:???
よくある質問5

with TEMP (NUM) as (
    select 1 from dual
    union all
    select NUM + 1 from TEMP where NUM < 31
)
select to_char(to_date('201006', 'YYYYMM') + NUM - 1, 'YYYYMMDD')
from TEMP
where to_date('201006', 'YYYYMM') + NUM - 1 < add_months(to_date('201006', 'YYYYMM'), 1)
;

※上記はOracleの場合です。(11gR2以降)
※再帰問合せをサポートするDBMSならこれを適当に改変すれば動きますが
 どのみちお奨めしません。

10NAME IS NULL2018/01/05(金) 02:49:13.40ID:???
よくある質問5 (後半の訂正)

どうしてもやりたければ以下のような方法もなくはないですが、
再帰問合せの本来の使い方ではありません。
やめておくことを強くお奨めします。
(PostgreSQLの連番を生成する関数なら辛うじてセーフかもしれませんが
 賛否の分かれるところでしょう。)

with TEMP (NUM) as (
    select 1 from dual
    union all
    select NUM + 1 from TEMP where NUM < 31
)
select to_char(to_date('201006', 'YYYYMM') + NUM - 1, 'YYYYMMDD')
from TEMP
where to_date('201006', 'YYYYMM') + NUM - 1 < add_months(to_date('201006', 'YYYYMM'), 1)
;

※上記はOracleの場合です。(11gR2以降)
※再帰問合せをサポートするDBMSならこれを適当に改変すれば動きますが
 どのみちお奨めしません。

11NAME IS NULL2018/01/05(金) 02:50:38.56ID:???
いちおつ
generate_series()関数がダメみたいだな

12NAME IS NULL2018/01/05(金) 21:56:46.58ID:???
前スレ971の回答でも貼っとくか

select T5."T3_ID"  "ID",
    T5."T3_日付" "日付",
    T5."T3_値"  "値",
    T5."T4_日付" "求めたい日付"
from  (select T3."ID"   "T3_ID",
        T3."日付"  "T3_日付",
        T3."値"   "T3_値",
        T4."T2_日付" "T4_日付",
        row_number() over (partition by T3."ID", T3."日付" order by T4."T1_日付" desc) "日付順"
    from  "TableName" T3
        left outer join
        (select T1."ID"  "T1_ID",
            T1."日付" "T1_日付",
            T2."日付" "T2_日付",
            row_number() over (partition by T1."ID", T1."日付" order by T2."値" desc) "値順"
        from  "TableName" T1
            inner join
            "TableName" T2
            on T1."ID" = T2."ID"
            and T2."日付" between add_months(T1."日付", -12) and T1."日付"
        ) T4
        on T3."ID" = T4."T1_ID"
        and T3."日付" > T4."T1_日付"
    where T4."値順" = 1
    or  T4."値順" is null
    ) T5
where T5."日付順" = 1
order by 1,2,3
;

13NAME IS NULL2018/01/06(土) 14:50:55.67ID:???
なるほど
全然速そうだな

14NAME IS NULL2018/01/06(土) 15:46:57.99ID:Os9t48kn
なんでそんな変なのばっかりなの?
ソートが頭から離れないのか。

15NAME IS NULL2018/01/07(日) 01:11:19.54ID:???
>>13
パーティション切ってrow_numberで先頭行だから
オプティマイザの出来次第だけどパフォーマンスに大差はないと思うけど
相関サブクエリとjoinなら同じ実行計画はいたりするし

>>14
はいはい
どうせ正解は書かないんじゃなくて書けないんでしょ

16NAME IS NULL2018/01/07(日) 10:01:46.51ID:yu9dE7vj
なんというレベルの低さ

17NAME IS NULL2018/01/07(日) 12:26:12.96ID:???
>全然速そうだな

変な日本語を何とかしろよ

18NAME IS NULL2018/01/07(日) 14:04:49.83ID:yu9dE7vj
>>15
>>3 を見たのか?

19NAME IS NULL2018/01/25(木) 18:41:52.80ID:heRfYWvO
mysqlでサブクエリを asに代入するとき、常に1カラムしかasできないため
サブクエリだらけになってしまうのですが、これをスマートに1サブクエリとかで取得できませんでしょうか?

SELECT
(
 SELECT
  max(num)
 FROM
  sub_table
) as max_num ,
(
 SELECT
  min(num)
 FROM
  sub_table
) as min_num,
(
 SELECT
 avg(num)
 FROM
  sub_table
) as avg_num
FROM
main_table
↑main_tableに sub_tableの min max avgを盛り込もうとすると
サブクエリだらけになってしまう。

20NAME IS NULL2018/01/25(木) 19:27:52.27ID:???
これでそのSQLと同じ意味にはなる
何がしたいのかはよくわからんが

select sub.*
from (select max(num) as max_num,
       min(num) as min_num,
       avg(num) as avg_num
   from  sub_table
   ) sub
   cross join
   main_table
;

21192018/01/26(金) 09:39:10.20ID:IngnXOhQ
>>20
ありがとうございます!!

22NAME IS NULL2018/01/26(金) 12:43:24.38ID:pxozcjcA
自作自演?

23NAME IS NULL2018/01/26(金) 17:32:37.75ID:???
どうしてそう思ったの?

24NAME IS NULL2018/01/26(金) 20:18:17.38ID:???
感謝ぐらい好きにさせてやれよ歪んでるなあ

25NAME IS NULL2018/01/28(日) 15:06:04.05ID:Qiu5BIxt
明らかに情報不足なのに情報を補完して回答しているからな。

26NAME IS NULL2018/01/28(日) 17:13:34.73ID:27cZ5HqG
それはキミ、情報不足やない、キミの知識不足やろ。

27NAME IS NULL2018/01/28(日) 18:21:25.57ID:qkfYCnFE
>>26
メインテーブルとサブテーブルの結合条件がクロスジョインとは普通、思わない。

28NAME IS NULL2018/01/28(日) 18:34:16.20ID:???
>>27
> メインテーブルとサブテーブルの結合条件がクロスジョイン
え?

29NAME IS NULL2018/01/28(日) 18:55:59.94ID:???
>>19のSQLがクロスジョインだと思えないのは知識不足としか言いようがない

30NAME IS NULL2018/01/28(日) 19:07:37.13ID:???
>>20は何も補完」してないだろ。逆に>>19の意味不明な部分はそのまま字面通り解釈して回答してる。

31NAME IS NULL2018/01/28(日) 19:16:59.64ID:???
>>29
main_table と「sub_table」の cross join だと思ってるなら知識不足以前の話かとww

32NAME IS NULL2018/01/30(火) 17:05:33.92ID:???
やりすぎ防犯パトロール、特定人物を尾行監視 2009年3月19日19時7分配信 ツカサネット新聞
http://headlines.yahoo.co.jp/hl?a=20090319-00000026-tsuka-soci

この記事で問題になった通称やりすぎ防パトは、創価学会と警察署が引き起こしていたようです

掻い摘んで説明すると

・創価学会は、町内会や老人会、PTA、商店会等の住民組織に関し、学会員が役員になるよう積極的に働きかける運動を
 90年代末から開始し、結果、多くの住民組織で役員が学会員という状況が生まれた

・防犯パトロールの担い手は地域の住民と住民組織で、防犯活動に関する会議や協議会には、住民組織の代表に役員が出席する為
 防犯活動や防パトに、創価学会が間接的に影響力を行使可能となった

・防パトは住民が行う為、住民が不審者や要注意人物にでっち上げられるトラブルが起きていたが
 創価学会はその緩さに目をつけ、住民組織を握っている状況を利用し、嫌がらせ対象者を不審者や要注意人物にでっち上げ
 防パトに尾行や監視、付き纏いをさせるようになった

・防パトは地元警察署との緊密な連携により行われる為、創価学会は警察署幹部を懐柔して取り込んでしまい
 不審者にでっち上げた住民への嫌がらせに署幹部を経由して警察署を加担させるようになった

・主に当該警察署勤務と考えられる創価学会員警察官を動かし、恐らく非番の日に、職権自体ないにもかかわらず
 私服警官を偽装させて管轄内を歩いて回らせ、防犯協力をお願いしますと住民に協力を求めて回り
 防犯とは名ばかりの、単なる嫌がらせを住民らに行わせた(防犯協力と称し依頼して回っていた警察官らの正体は恐らく所轄勤務の学会員警察官)
 ※これに加えて防犯要員が同様のお願いをして回る

・こうして防犯パトロールを悪用し、住民を欺いて嫌がらせをさせつつ、創価学会自体も会員らを動員し、組織的な嫌がらせを連動して行った

つまり警察署に勤務する学会員警察官、警察署幹部、創価学会が通称やりすぎ防犯パトロールの黒幕

詳細は下記スレをご覧下さい
やりすぎ防犯パトロールは創価学会と警察署の仕業だった
https://rio2016.5ch.net/test/read.cgi/bouhan/1516500769/

33NAME IS NULL2018/02/04(日) 15:27:38.88ID:gIv0OydZ
質問です
以下のようなTableAとTableBをTableAのIDで結合して、

1. TableBに特定のKEY(ここではKEY=2)が含まれているならそのデータを、
2. 含まれていなければ若いKEYのデータを、
3. KEYそのものが存在しなければNULL

を返す結果を取得したいです
どのようなSQLなら実現しますか?


「TableA」
ID | NAME
--+-------
1 | aaa
2 | bbb
3 | ccc
4 | ddd

「TableB」
ID2 | ID | KEY | DATA
--+----+-----+-----
1 | 1   | 1    | a_key1
2 | 1   | 2    | a_key2
3 | 1   | 3    | a_key3
4 | 2   | 1    | b_key1
5 | 2   | 2    | b_key2
6 | 3   | 1    | c_key1
7 | 3   | 3    | c_key3

「結果」
ID | NAME    | ID2 | DATA
--+---------+----------
1 | aaa | 2    | a_key2
2 | bbb | 5    | b_key2
1 | ccc | 6    | c_key1
3 | ddd | NULL | NULL

34NAME IS NULL2018/02/04(日) 15:29:21.67ID:gIv0OydZ
訂正

「結果」
3 | ccc | 6    | c_key1
4 | ddd | NULL | NULL

35NAME IS NULL2018/02/04(日) 17:18:13.30ID:???
>>33
SQL-Server なら
select T.ID as ID, T.NAME as NAME, T.ID2 as ID2, T.DATA as DATA
from (
select
row_number() over (
partition by TableA.Id
order by
case TableB.[KEY]
when 2 then 0 else 1
end,
TableB.[KEY] asc
) as R,
TableA.ID as ID,
TableA.NAME as NAME,
TableB.ID2 as ID2,
TableB.DATA as DATA
from TableA left join TableB on TableA.ID = TableB.ID
) T
where T.R = 1

36NAME IS NULL2018/02/04(日) 17:38:30.70ID:gIv0OydZ
>>35
ありがとうございます
使用しているのはMariaDB 10.1でしたが(書き忘れ失礼しました)、頂いた解答をヒントに試してみます

37NAME IS NULL2018/02/04(日) 18:26:18.34ID:???
>>36
う〜ん、MariaDB使ったことないけど
https://mariadb.com/kb/en/library/row_number/
を見るとrow_number()は10.2.0以降でないとダメみたい
10.2.0には上げられないの?

38NAME IS NULL2018/02/04(日) 18:33:52.86ID:gIv0OydZ
>>37
こちらもちょうどそこに行き着いてました
バージョンを上げることは可能なので最新版にアップデートして試してみようと思います
わざわざ調べて頂き感謝します

39NAME IS NULL2018/02/14(水) 13:22:57.02ID:???
☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆

40NAME IS NULL2018/02/15(木) 23:04:18.91ID:???
SQLがなかなか覚えられません
SELECT が先頭に来るのは覚えていますが、
次がFROMか、WHEREか迷ったりします
なにか覚えやすい方法ってありますか?

41NAME IS NULL2018/02/15(木) 23:30:33.91ID:???
暗記

42NAME IS NULL2018/02/16(金) 00:34:33.15ID:???
>>40
順番はきっちり決まってるから覚えれば迷うことはない
それすら覚えられないならマやめた方がいい

43NAME IS NULL2018/02/16(金) 07:59:00.96ID:???
>>41-42
ありがとうございます
覚えます

44NAME IS NULL2018/02/22(木) 17:16:09.65ID:???
集計で、nullがあれば0で、nullが1つもない場合は最大値や最小値を取ってくるような書き方ってないでしょうか?

45NAME IS NULL2018/02/22(木) 18:10:39.74ID:???
>>44
CASE式で

SELECT c1,
CASE (SELECT count( * ) FROM t1 AS a WHERE a.c1 = b.c1 AND c2 IS NULL)
WHEN 0 THEN sum(c2)
ELSE 0 END
FROM t1 AS b
GROUP BY c1

設計見なおしたほうがいいパターンだと思う

46NAME IS NULL2018/02/22(木) 18:30:09.05ID:???
少し違うやり方だけどこっちのほうがパフォーマンスはいいかも。

SELECT c1, CASE sum(c3) WHEN 0 THEN sum(c2) ELSE 0 END
FROM (SELECT c1, c2, CASE WHEN c2 IS NULL THEN 1 ELSE 0 END AS c3 FROM t1) AS t2
GROUP BY c1
ORDER BY c1;

47NAME IS NULL2018/02/23(金) 10:11:31.58ID:???
>>45 >>46
ありがとうございます!
後者の方が問い合わせが少ない感じで良さそうですね。

48NAME IS NULL2018/02/23(金) 21:55:14.87ID:0la0B0YA
uelect文を2つ書いてunion allの方がよっぽど可読性が高い。

49NAME IS NULL2018/02/23(金) 22:08:01.48ID:KWaEL2bi
union言いたすぎてuelectになっちゃう奴カワユスw

50NAME IS NULL2018/02/23(金) 23:22:19.25ID:???
>>48
その可読性が高いやつ提示しなよ

51NAME IS NULL2018/02/24(土) 09:47:28.16ID:???
uelectあるじゃん

52NAME IS NULL2018/02/24(土) 10:02:55.41ID:???
ウェレクト

53NAME IS NULL2018/02/24(土) 19:12:40.41ID:Au0dOZ0B
セレクト 0 as カラム別名 from テーブル名 group by グループ列名 having 列名 is null
union all
セレクト max(カラム名) as カラム別名 from テーブル名 group by グループ列名 having 列名 is not null

54NAME IS NULL2018/02/24(土) 20:27:08.92ID:pUuArQ+S
uelectになるのにビビってセレクトになっちゃう奴カワユスw

55NAME IS NULL2018/02/24(土) 20:41:54.02ID:???
いつもSQL書かずに意味不明なイチャモンだけつけてた人が
珍しくSQL書いたと思ったらやっぱり意味不明なSQLじゃんか
havingの意味分かってないんだろうな

56NAME IS NULL2018/02/24(土) 20:54:00.99ID:pUuArQ+S
>>55
おい勘違いするな
いつも意味不明なイチャモンつけてるアゲは俺だ
アゲだからといってバカと一緒にされては困るなw

57NAME IS NULL2018/02/25(日) 00:08:49.03ID:???
union all期待してたのに。。。こんな結果なの??

>>45のやつはCASE WHEN EXISTSにしたほうがよかったね

58NAME IS NULL2018/02/25(日) 03:10:53.80ID:???
SEなんだが殆ど要件定義とか折衝が主担当だから
SQLの知識があんまりなくていつも効率悪い調査の仕方だったりベンダーさんに投げてしまったりになってしまうんで質問させてください
使用しているのはoracle SQLです。
下みたいなAテーブル、Bマスタがあって
Aテーブル(トラン)
no 名前 上長名前 日付

Bマスタ
名前 社員番号 適用開始日 適用終了日

【抜き出したい情報】
・Aテーブルに1つもない(名前、上長名前)人員の情報(Bマスタの名前、社員番号)
・Aテーブルの名前、上長名前に1以上トランが発生している人員情報、発生件数(名前、上長名前で分ける)

を抽出したい場合はどうすればよいでしょうか?
実業務ではベンダーさんからの報告で解決したのですが次からは自分でも頑張ってみたくて勉強したのですが実際に書こうと思うと全く上手くいきませんOTL

59NAME IS NULL2018/02/25(日) 03:25:04.65ID:???
>>58
とりあえず自分の思うように書いてみ

60NAME IS NULL2018/02/25(日) 03:51:57.01ID:???
>>59
すみません構文もめちゃくちゃだし途中まで書いてわからなくなっちゃったのですが
上から一つ目
select B.名前,B,社員番号 from Aテーブル A inner join Bマスタ B
on A.名前 = B.名前 or A.上長名前 = B.名前
where
A.日付 between B.適用開始日 and B.適用終了日
 
ってとこまで書いて挫折してしまいました・・・・・
COUNT、EXISTSを使えばよさそうだなとは思うのですがどうでしょう?
ちなみに2つ目のはまったく見当もつかない状況です・・・・

元は営業職で今期から情報部に異動してきて勉強はしてるのですがまったくわかりません・・・
本職SEの方の文の書き方の考え方のコツなんかも教えていただけるとうれしいです

61NAME IS NULL2018/02/25(日) 15:25:45.40ID:EdN+hOz0
>>55
having に集計関数と書かずにカラム名と書いたら、見事にそこだけ問題視するんだな。

セレクトと書いているのもSQLインジェクション対策に引っかかるため。

62NAME IS NULL2018/02/25(日) 15:27:53.61ID:EdN+hOz0
セレクト 0 as カラム別名 from テーブル名 group by グループ列名 having グループ列名 is null
union all
セレクト max(グループ名) as カラム別名 from テーブル名 group by グループ列名 having max(グループ名) is not null

63NAME IS NULL2018/02/25(日) 15:29:20.92ID:EdN+hOz0
曖昧質問に対して勝手な想像で要件を決めつけて答えるのはよくない。

そもそもSQLをずばり教えてくれというのが間違い。

64NAME IS NULL2018/02/25(日) 15:31:10.48ID:EdN+hOz0
>>57
select句にselect文を書くのを推奨するな。

65NAME IS NULL2018/02/25(日) 15:37:06.31ID:EdN+hOz0
>>60
あなたが書いているとおりに書けばよい。

なぜ一つのSQLでいきなりやろうとするのか?

66NAME IS NULL2018/02/25(日) 15:39:24.08ID:EdN+hOz0
>>60
3パターンの整理をせよ。

67NAME IS NULL2018/02/25(日) 15:44:37.91ID:EdN+hOz0
>>60
それあなたのいう1つ目もできていない。
少なくともそのSQLにこだわりがあるのなら、内部結合ではなく外部結合しなければ、1つ目も達成できていない。

68NAME IS NULL2018/02/25(日) 15:45:55.07ID:???
>>62
ここで動かしてみてくれよ
そういうクエリでも動くDBMSがあるんならぜひ知りたい
http://sqlfiddle.com/#!17/05796a

69NAME IS NULL2018/02/25(日) 15:46:29.20ID:???
>>64
なんで?

70NAME IS NULL2018/02/25(日) 17:49:37.39ID:fHMtmeQ2
順当にバカが発狂しとるなw

71NAME IS NULL2018/02/25(日) 18:35:17.10ID:???
>>60
1. SQLの研修を受ける
2. 最小限のテストデータを作成して試行錯誤を繰り返す
3. 少し高度なクエリをWebや書籍で学ぶ

まず1と2をやること(>>58のやつはSQLの研修を受講すれば解決できるレベル)
基本的なクエリは問題なく出来るようになってから3に進む
3はミックのブログやセルコの本がおすすめ

72NAME IS NULL2018/02/25(日) 18:36:47.80ID:???
あと要件定義が主な担当なら
SQLの書き方よりもDB設計を学んだほうが役立つ度合いが大きいよ

73NAME IS NULL2018/02/25(日) 21:06:12.14ID:???
>>58
http://sqlfiddle.com/#!9/81ab8/1

2つめはfilter句が使えるDBもあるけど普通はCASE式かな

74NAME IS NULL2018/02/26(月) 00:51:55.29ID:???
>>71
SQLの受講は予定してるけど・・・
ここってそういうの教えてくれる板じゃないの?
勉強法なんて聞いてないんだが

75NAME IS NULL2018/02/26(月) 02:37:26.99ID:???
こいつはクズだね〜w
営業をお払い箱になって情シスでもお荷物だな

76NAME IS NULL2018/02/26(月) 02:57:29.29ID:???
簡単に解決できるレベルとかいって勉強法講釈たれる奴もどうかと思うがな

77NAME IS NULL2018/02/26(月) 14:57:52.44ID:???
>ベンダーさんに投げてしまったりになってしまうんで
とか言ってるやつがこのスレに投げるだけになるんだぜ
鬱陶しいだろ

78NAME IS NULL2018/02/26(月) 16:34:56.99ID:???
問題を解くコツを教えてもらおうとする前に基礎を学べってことだろ
内部結合や外部結合は算数で言えば四則演算レベルの基礎なんだからさ

79NAME IS NULL2018/02/26(月) 19:15:23.41ID:k450wkRK
教えたがりのくせに質問には答えたくないてどないやねんw
そのややこしい承認欲求どうにかしろやw

80NAME IS NULL2018/02/26(月) 20:28:10.94ID:???
>>60だけど
やっぱりSEって気持ち悪いな
ベンダー嬲り倒すことにしたわ
てか早く答えろやwwwPGしかできないアホなんだからこれくらいすぐ答えだせwwwwww

81NAME IS NULL2018/02/26(月) 20:56:37.17ID:???
答え出てるだろww

82NAME IS NULL2018/02/26(月) 20:59:21.87ID:???
>>81
どこが出てるんだよwwwwww
やっぱSEって頭おかしいのしかいないのなwwwwww

83NAME IS NULL2018/02/26(月) 21:13:20.39ID:???
おまえマジかww
回答してくれた気持ち悪いエス・イーさんの親切心台無しだなww

84NAME IS NULL2018/02/27(火) 20:04:14.37ID:???
困ったら黙っちゃうSEさん達現実でも2ちゃんでも同じなんだね・・・・・

85NAME IS NULL2018/02/28(水) 08:09:46.03ID:???
>>44
これでもいける
select c1,
case when count(*) = count(c2)
then max(c2)
else 0
end
from t1
group by c1
order by c1

86NAME IS NULL2018/02/28(水) 16:49:50.76ID:???
>>85
そんな答え出てるものより60でも答えたれや

87NAME IS NULL2018/02/28(水) 18:05:33.63ID:???
60も答えでとるやん

88NAME IS NULL2018/02/28(水) 19:44:20.59ID:F+U9w50n
>>87
それではその答えを31文字以内で示しなさい。

89NAME IS NULL2018/02/28(水) 19:49:58.19ID:???
>>87
どこにでてんだよwwwwww
あほかよSEさんwwwwww

90NAME IS NULL2018/02/28(水) 22:18:01.64ID:???
二人もおるんかww
インターネッツの使い方も知らないんやなwwwププッ

91NAME IS NULL2018/03/01(木) 07:11:43.52ID:???
箇条書きの条件それぞれのsqlつくればいいのか?
それなら簡単じゃね

92NAME IS NULL2018/03/01(木) 07:52:43.33ID:RvibXfFY
簡単じゃねえ!

93NAME IS NULL2018/03/01(木) 11:39:27.35ID:hRou4xtV
これは「SQLの研修行け」の人が正解だったな

94NAME IS NULL2018/03/01(木) 12:18:12.52ID:/b0teX7H
>>93
バカはお口にチャックで

95NAME IS NULL2018/03/01(木) 15:53:17.90ID:???
>>92
どの辺が簡単じゃないの?

96NAME IS NULL2018/03/01(木) 18:35:19.24ID:???
こんな簡単な SQLも教えられないとかゴミしかいないんだなここ
そりゃ営業上がりに馬鹿にされるわけだわ

97NAME IS NULL2018/03/01(木) 18:42:45.36ID:???
>>96
簡単なSQLだからこそ

98602018/03/01(木) 18:53:30.95ID:???
ほらこの答え出るまで
俺居座るからなはやくだせや
他のやつ質問すんなよこれが最優先だから

99NAME IS NULL2018/03/01(木) 18:59:20.56ID:???
お前が質問してからのレスを全部読み返せよ、ゴミ

100NAME IS NULL2018/03/01(木) 19:05:25.93ID:???
簡単なSQLすら理解できない人に教えるとか無理ゲーやろ

新着レスの表示
レスを投稿する