1

ここに問題があります。

select count(studentID) AS count from educators where count  > 1 group by studentid  

SQL Serverはカウント列をまだ認識していないため、機能しません。

だから私はこれをしなければなりません

select *
  from (select count(StudentID) as count
          from educators
         group by studentid
       ) s
 where s.count > 1

よりエレガントな解決策はありますか?これを行うにはもっと良い方法があるはずです。

4

5 に答える 5

5

HAVING次のような句を使用できます。

SELECT StudentID, COUNT(StudentID)
FROM educators
GROUP BY StudentID
HAVING COUNT(StudentID) > 1

クエリは、複数回表示されるすべてのStudentIDを表示します。

于 2012-06-08T02:45:16.840 に答える
3
SELECT COUNT(studentID) AS count 
FROM educators 
GROUP by studentid 
HAVING COUNT(studentID) > 1

HAVINGは、集計関数の場所のようなものです。したがって、AVG、SUMなどで機能します。

于 2012-06-08T02:41:31.360 に答える
1
SELECT
    COUNT(StudentID)
FROM
   educators
GROUP BY
  studentid
HAVING
  COUNT(StudentID) > 1

あなたのツールとあなたがしてはならないクリップボード開発者を学びましょう。

于 2012-06-08T02:42:03.460 に答える
1

あなたが持っているものはそれが得るのと同じくらい良いです。エイリアス以外の名前を使用してみることができますがcount、おそらくあまり役​​に立ちません。列エイリアスは、名目上、結果セットでのみ使用され、場合によっては(一部のDBMSではORDER BY句で使用できます)。

さらに、集計の条件は、GROUPBY句の後のHAVING句に属します。

SELECT COUNT(studentID) AS count
  FROM educators
 GROUP BY studentid
HAVING COUNT(StudentID) > 1

明らかに、ネストされたSELECTの場合、外部クエリのWHERE句に条件を適用できますが、内部クエリのWHERE句には適用できません。

于 2012-06-08T02:43:30.300 に答える
0

SELECT COUNT(studentID)AS count FROM educators GROUP BY studentid HAVING COUNT(StudentID)> 1

min()、max()、count()、avg()のような集計関数を使用している場合は、having句を使用する必要があることを常に覚えておいてください。

于 2012-06-08T11:05:23.930 に答える