3

特定の列と同じ値を持つテーブル内の行数を取得する SQL を作成しようとしています。この場合、表には「タイトル」という列があります。返される行ごとに、その行の他の列の値とともに、その行の「タイトル」値と同じ値を持つテーブル内の行数を取得したいと考えています。今のところ、私が持っている最高のものは次のとおりです。select firstname、lastname、city、state、title、(select count from myTable where title = title);

明らかに、これで得られるのは、サブセレクト内のテーブルの行数だけです。列のタイトルの値を参照するには、タイトルの右側 = を取得するにはどうすればよいですか?

助けてくれてありがとう、誰でも。

4

3 に答える 3

2

これは「相関サブクエリ」と呼ばれます。こんなふうになります:

select firstname, lastname, title, 
              (select count(1) from table where title=a.title) title_count 
from table a;
于 2012-07-27T20:28:15.420 に答える
1

ほとんどのデータベースは、ウィンドウ/分析関数をサポートしています。これらのいずれか (SQL Server、Oracle、Postgres など) を使用している場合は、次のように実行できます。

select t.firstname, t.lastname, t.title, t.city, t.state,
       count(*) over (partition by title) as numwithtitle
from t
于 2012-07-27T21:22:25.610 に答える
1

これはテストされていませんが、あなたがやろうとしていることにはうまくいくはずです

WITH titles AS (
    SELECT
        Title
        , COUNT(*) AS Occurences
    FROM myTable
    GROUP BY Title
)
SELECT 
    t1.FirstName
    , t1.LastName
    , t1.City
    , t1.state
    , t1.title
    , titles.Occurences
FROM myTable AS t1
INNER JOIN titles ON t1.Title = titles.Title
于 2012-07-27T20:30:48.420 に答える