0

私はこれを見つけることができませんでした、私はそれが単純であると確信しています。

テーブル(196行)

tech, name, area, manager
------------------------------
Joe,mary,pa,sally
Kim,brad,ga,tim
kelly,Joe,pa,sally
Joe,jose,pa,sally

技術者は複数の名前/エリア/マネージャーに割り当てられています。テーブルのすべての行と、技術者の割り当て数を示す列を示すレポートを作成したいと思います。

私の望む結果

tech, name, area, manager, (count of number of tech assignments)
Joe,mary,pa,sally,2
Kim,brad,ga,tim,1
kelly,Joe,pa,sally,1
Joe,jose,pa,sally,2
4

4 に答える 4

3

SELECT句にサブクエリが必要だと思います。

SELECT 
   name, 
   area, 
   manager, 
   (SELECT COUNT(*) FROM tablename WHERE tech = x.tech) AS assignments
FROM tablename x

そして、これが同じことを行うためのおそらくより効率的な方法です:

SELECT 
   t.name, 
   t.area, 
   t.manager,
    sub.assignments 
FROM tablename t
INNER JOIN (
    SELECT tech, COUNT(*) AS assignments 
    FROM tablename 
    GROUP BY tech
 ) sub
ON sub.tech = t.tech
于 2012-04-18T15:04:29.123 に答える
1
select 
    a.tech, a.name, a.area, a.manager,
    b.cnt
from table a, (
    select count(*) cnt, tech
    from table
    group by tech) b
where a.tech=b.tech;

これは、あなたの望むことですか?

于 2012-04-18T15:11:20.073 に答える
0
SELECT tech, count(name) AS total_records FROM db_table GROUP BY tech

しかし、これがあなたが探しているものかどうかはわかりません。そうそう、本当にサブクエリを使用する必要があるようです。例をありがとう、それは助けになりました。

于 2012-04-18T15:12:21.070 に答える
0
SELECT tech, name, area, manager, assignments  
FROM table
  INNER JOIN ( 
    SELECT tech, COUNT(*) AS assignments  
    FROM table  
    GROUP BY tech 
  ) t 
USING (tech)

説明:

テーブルからすべての列を選択し、技術列を含むテーブルと特定の技術を持つテーブルの行数を結合します。キーワード USING は、これら 2 つのテーブルがどのようにマージされるかを示します。

于 2012-04-18T15:21:01.793 に答える