3

私はこのようなテーブルを持っています:

book_no     lang      price      shelf     
----------  --------  ---------  -----
1           eng       20         a  
4           french    34         a  
2           eng       26         b  
7           russian   71         b  
12          german    33         a  
43          french    15         d  
11          eng       43         c  
14          rusian    33         a  
19          eng       20         d  
24          french    40         c  
23          eng       57         a  
27          russian   48         b  
42          german    31         c  
25          french    15         d  

このテーブルからbook_no、language、shelfを取得したいと思います。
3回以上存在する言語、それらの本のみが表示されます。
私は試した:

select book_no,lang,shelf from a where (count(lang)>3)    

事前に助けてくれてありがとう

4

3 に答える 3

4
SELECT book_no, 
       lang, 
       shelf 
FROM   a 
WHERE  lang IN (SELECT lang 
                FROM   A 
                GROUP  BY lang 
                HAVING Count(*) > 3) 
于 2012-05-24T11:05:22.393 に答える
1

count、sum などのグループ関数は where 句では使用できません。

グループ化を使用する

group by book_no -- or the fields you need, depending on sgbd, you can put one or have to put all

と有節

Having count(lang) > 3
于 2012-05-24T11:01:34.850 に答える
0

DBMSが集約ウィンドウ関数をサポートしている場合は、次のことを試すことができます。

SELECT
  book_no,
  lang,
  shelf
FROM (
  SELECT
    *,
    COUNT(*) OVER (PARTITION BY lang) AS book_count
  FROM a
) s
WHERE book_count >= 3
于 2012-05-24T12:53:53.857 に答える