最大値と最小値を見つけるための結果が複数あることに対応する方法を探していました。以前の質問へのリンクを見つけました: max Counts
与えられた答えの1つは次のとおりです。
SELECT color_id, COUNT(color_id) totalCount
FROM products
WHERE item_id = 1234
GROUP BY color_id
HAVING COUNT(color_id) =
(
SELECT COUNT(color_id) totalCount
FROM products
WHERE item_id = 1234
GROUP BY color_id
ORDER BY totalCount DESC
LIMIT 1
)
これは、特に大規模なデータベースで受け入れられている慣行ですか? それが理にかなっている場合、上記のクエリは基本的にそれ自体で実行されていませんか?
また、ma と min を見つける必要がある、より複雑なクエリがあります。私はそれを最適化したい:
編集:
SELECT `system_users`.`first`, `system_users`.`last`, COUNT(`quotes`.`created_by`) as most_quotes
FROM `quotes`
INNER JOIN `system_users`
ON `quotes`.`created_by` = `system_users`.`id`
where `system_users`.`store_id` = '$createdID'
and `quotes`.`date_created` between '$startDate' and '$endDate' group by(`created_by`)
HAVING count(`quotes`.`created_by`) =
(
SELECT COUNT(`quotes`.`created_by`)
FROM `quotes`
INNER JOIN `system_users`
ON `quotes`.`created_by` = `system_users`.`id`
where `system_users`.`store_id` = '$createdID'
and `quotes`.`date_created` between '$startDate' and '$endDate' group by(`created_by`) ORDER BY count(`created_by`) DESC limit 1
)
OR
(
SELECT COUNT(`quotes`.`created_by`)
FROM `quotes`
INNER JOIN `system_users`
ON `quotes`.`created_by` = `system_users`.`id`
where `system_users`.`store_id` = '$createdID'
and `quotes`.`date_created` between '$startDate' and '$endDate' group by(`created_by`) ORDER BY count(`created_by`) ASC limit 1
)
ORDER BY most_quotes ASC
これまでのところ、最大値と最小値を見つけるためのさまざまな方法を考えようとしています。これについてこれ以上の助けをいただければ幸いですありがとうmc