3列のテーブルがあります:
userid mac_address count
1 人のユーザーのエントリは次のようになります。
57193 001122334455 42
57193 000C6ED211E6 15
57193 FFFFFFFFFFFF 2
このユーザーが「よく使用する」と見なされる MAC のみを表示するビューを作成したいと考えています。たとえば、そのユーザーの最も使用されている MAC アドレスと比較して、使用されている MAC アドレスが 10% 未満である MAC を除外したいと考えています。さらに、ユーザーごとに1行が必要です。これは、GROUP BY、HAVING、および GROUP_CONCAT を使用して簡単に実現できます。
SELECT userid, GROUP_CONCAT(mac_address SEPARATOR ',') AS macs, count
FROM mactable
GROUP BY userid
HAVING count*10 >= MAX(count)
実際、結果は次のとおりです。
57193 001122334455,000C6ED211E6 42
ただし、ビューにカウント列を表示したくありません。しかし、SELECT ステートメントからそれを取り出すと、次のエラーが発生します。
#1054 - Unknown column 'count' in 'having clause'
ビューに厄介なカウント列を強制することなく、この操作を実行できる方法はありますか? おそらく内部クエリを使用して実行できることはわかっていますが、パフォーマンス上の理由からそれを避けたいと思います。
あなたの助けは大歓迎です!