OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

SQLでのcount方法

  • 困ってます
  • 質問No.176379
  • 閲覧数177
  • ありがとう数1
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 55% (11/20)

こんばんは。まず始めに申し上げておきますと
この質問は、できるかどうかすらもわかりません。
できなければ「できない」とお答えいただけるだけでも助かります。
では本題です。
SQLのDBで
data1|data2
----+-------
1   | 1
1   | 2
2   | 2
2   | 4
というようにデータが存在したとします。
ここで、data1=data2の場合、同じデータとしてカウントは「1」とされ、data1!=data2の場合にはそれぞれにカウントします。
つまり、ここで望む結果は以下のようになります。
data |count
----+-------
1   | 2
2   | 3
4   | 1

どうでしょうか?
こんなことできるのでしょうか?
もし何らかの方法が存在するならばお教えください。
宜しくお願いします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル11

ベストアンサー率 34% (97/285)

再びstorkです。

>使用しているのはpostgreSQLです..
前回のSQLは試して見ましたか?
postgres使用したことがないんですが、おそらく大丈夫だと思います。

ひっかかるとすればunion句をネストしているところかな(?)
試してみてひっかかったところを補足してもらえば、解決できるかも知れません。

>postgresでvalueは使えないですよね?
valueは単なる別名なので関係ないです。
もし、予約語でひっかかる場合は適当な文字に置き換えてください。
お礼コメント
takuchin

お礼率 55% (11/20)

まだまだ理解できない個所はありますが何とか以下の方法でできました。
select data1 as value, count(*)
from (select data1 from test where data1=data2 union all select data1 from test where data1!=data2
union all select data2 from test where data1!=data2)
as tmp group by value;

storkさんのを見本にして少し手を加えたらできました。
「DataCount」というものが結局わからなかったのですが、とりあえず置いときます。(まだまだ勉強が足りん...)
ではありがとうございました。皆さん、本当に感謝してます!
投稿日時 - 2001-11-29 19:13:19
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル7

ベストアンサー率 37% (6/16)

「望む結果」のdataとcountがどう対応しているのかよくわかりません。 例えば、「望む結果」の1行目のdata 1 とcount 2 は何を指していますか? count 2 は、多分、一致するレコードがテーブル例の1行目と3行目の2件あるという意味なのだと思うのですが。。。 補足説明をお願いします。 ...続きを読む
「望む結果」のdataとcountがどう対応しているのかよくわかりません。
例えば、「望む結果」の1行目のdata 1 とcount 2 は何を指していますか?
count 2 は、多分、一致するレコードがテーブル例の1行目と3行目の2件あるという意味なのだと思うのですが。。。
補足説明をお願いします。
補足コメント
takuchin

お礼率 55% (11/20)

せ、説明が難しい...。
え~、ではデータが数値だとわかりにくいので、ちょっとテーブル例を文字に変えて1行目から説明します。
data1|data2
----+-------
A   | A
A   | B
B   | B
B   | C

まずはdata1=A,data2=A、これは両方AなのでAが1件(count)となります。
次にdata1=A,data2=Bなので先程のAが++され2になり、
Bが1件countされます。
3行目は両方Bなので先程のBに1件++され、2件になります。
最後にdata1=B,data2=CなのでBは3件になって、Cが1件となり、以下の結果になります。
data |count
----+-------
A   | 2
B   | 3
C   | 1
おわかりいただけたでしょうか?何かいい策をお待ちしております。
投稿日時 - 2001-11-29 09:25:16
  • 回答No.2
レベル9

ベストアンサー率 76% (33/43)

動作確認はしていない為、別名の指定にてエラーが起きるかもしれませんが、 SELECT data, Count(data) count FROM (SELECT data1 data from hoge union all select data2 from hoge where hoge.data1 <> hoge.data2) GROUP BY data で、如何でしょうか ...続きを読む
動作確認はしていない為、別名の指定にてエラーが起きるかもしれませんが、

SELECT data, Count(data) count
FROM (SELECT data1 data from hoge
union all select data2 from hoge where hoge.data1 <> hoge.data2)
GROUP BY data

で、如何でしょうか?
尚、テーブル名は「hoge」とさせて頂きました。
  • 回答No.3
レベル9

ベストアンサー率 76% (33/43)

シングルクォーテーションを忘れた・・・(^ ^; SELECT data, Count(data) 'count' FROM (SELECT data1 'data' from hoge union all select data2 from hoge where hoge.data1 <> hoge.data2) GROUP BY d ...続きを読む
シングルクォーテーションを忘れた・・・(^ ^;

SELECT data, Count(data) 'count'
FROM (SELECT data1 'data' from hoge
union all select data2 from hoge where hoge.data1 <> hoge.data2)
GROUP BY data

すいませんでした。m(_ _)m
補足コメント
takuchin

お礼率 55% (11/20)

すみません、できませんでした。いろいろ調べたり、試してみたりしたんですが、、、。
試してみたといっても書かれている内容を把握できませんので正直「下手な鉄砲」です。
もしよろしければ説明を加えていただけると非常にありがたいのですが、、、。
わがまま言って申し訳ありません。
投稿日時 - 2001-11-29 09:52:49
  • 回答No.4
レベル11

ベストアンサー率 34% (97/285)

下の感じでいかがでしょうか SQLのDBってMS-SQLserverと言うことですか? データを3つのセクションに分けて抽出してカウントします。 1.data1=data2のデータ 2.data1<>data2のdata1 3.data1<>data2のdata2 <SQLserverの例>--------------------------------- ...続きを読む
下の感じでいかがでしょうか
SQLのDBってMS-SQLserverと言うことですか?

データを3つのセクションに分けて抽出してカウントします。
1.data1=data2のデータ
2.data1<>data2のdata1
3.data1<>data2のdata2

<SQLserverの例>----------------------------------
SELECT value data, COUNT(value) DataCount
FROM (SELECT data1 value FROM table1 WHERE data1 = data2
    UNION ALL
    SELECT data1 FROM table1 WHERE data1 <> data2
    UNION ALL
    SELECT data2 FROM table1 WHERE data1 <> data2) AS tableA
GROUP BY tableA.value
------------------------------------------------
後学のために、差し支えない範囲でどのようなことで使用されるのか教えていただけませんか?
補足コメント
takuchin

お礼率 55% (11/20)

使用しているのはpostgreSQLです...。
postgresでvalueは使えないですよね?ちょっと良くわかりませんが、、、。valuesは使うんですけど。
>後学のために、差し支えない範囲でどのようなことで使用されるのか教えていただけませんか?
これはちょっと控えさせていただけないでしょうか?
すみません。。。m(_ _)m
どんなシステムかだけ申しますと、ある商品の出荷入荷情報を統計に取るシステムです。
これだけでどうかご勘弁を。。。
もしpostgreSQLでの方法もご存知でしたらお手数ですがお教えいただけないでしょうか?
宜しくお願いいたします。
投稿日時 - 2001-11-29 11:27:53
このQ&Aで解決しましたか?
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ