3

ここに画像の説明を入力してください

それは私のテーブルの写真です。

「Tegund」が最も一般的な値であるすべての車の「Fastanumer」を選択する必要があります(この例ではトヨタです)。

これは私が試したコードです

SELECT Fastanumer FROM  `Bill` 
WHERE Tegund =  
(SELECT MAX(y.cnt) FROM (SELECT COUNT(Tegund) AS cnt FROM Bill ) AS y)

MAXが数字に変わるだけであるという事実に頭を悩ませることになるだけで、私はそれを理解するためにかなり一生懸命働かなければなりませんでした。(そしてTegundは数字のリストではないので...)

これも可能ですか?これどうやってするの?

4

4 に答える 4

4

私はそれがこのように動作するはずだと思います:

SELECT Fastanumer 
FROM  `Bill` 
WHERE Tegund = (
    SELECT Tegund 
    FROM (
        SELECT Tegund,COUNT(*) FROM Bill GROUP BY Tegund ORDER BY COUNT(*) DESC LIMIT 1
    ) t1
)

または、次のようにします。

SELECT Fastanumer 
FROM  `Bill` 
WHERE Tegund = (
    SELECT Tegund FROM Bill GROUP BY Tegund ORDER BY COUNT(*) DESC LIMIT 1
)
于 2013-03-12T20:34:49.423 に答える
1

これが私の解決策です:

SELECT Bill.*
FROM Bill
WHERE Tegund IN (
  SELECT Tegund
  FROM Bill
  GROUP BY Tegund
  HAVING COUNT(*) = (
    SELECT MAX(cnt) FROM (
      SELECT COUNT(*) cnt
      FROM Bill
      GROUP BY Tegund
    ) s
  )
)

他のものより少し複雑ですが、複数がTegund同じ数の行を共有している場合、このクエリは最も一般的なすべてのテガンドを表示します。

ここまたはここのフィドルを参照してください。

于 2013-03-12T21:32:15.900 に答える
0

最初にやりたいことはTegund、テーブルに最も多く表示されるものを見つけることです。それがサブクエリが行っていることです。Fastanumer次に、それに一致するを選択しますTegund

SELECT DISTINCT Fastanumer 
FROM 'BILL'
WHERE Tegund = (
    SELECT TOPT 1 Tegund, 
                  COUNT(*) as Count
    FROM `BILL`
    GROUP BY Tegund
    ORDER BY Count DESC)
于 2013-03-12T20:37:42.920 に答える
0

DB (および関連する SQL) に依存します。試す

select fastanumber from bill
    inner join
(select count(*) as cnt, tegund from Bill group by tegund) grpby
    on bill.tegund = grpby.tegund
    and grpby.cnt = (select max(cnt) from (select count(*) as cnt, tegund from Bill group by tegund))
于 2013-03-12T20:41:20.797 に答える