Как выбрать самый популярный пункт для каждого государства - PullRequest
1 голос
/ 26 июня 2019

Схемы таблиц:

customers
|_state

products
|_product_name

transactions
|_product_id

Как вернуть имена наиболее популярных элементов в каждом штате с именем штата?

Это самый близкий рабочий пример.

SELECT state, products.product_name, COUNT(products.product_name)
FROM customers INNER JOIN transactions ON customers.customer_id = transactions.customer_id
INNER JOIN products ON transactions.product_id=products.product_id
GROUP BY state, products.product_name;

, который дает все продукты для каждого состояния следующим образом:

 state      name        name count  
 "AK"    "product1"        "1"
 "AK"    "product2"        "4"
 "AK"    "product3"        "1"
 "AR"    "product2"        "1"
 "AR"    "product2"        "2"

Опять же, я хочу только наибольшее количество в каждом штате.

1 Ответ

0 голосов
/ 26 июня 2019

Использование MAX() с данным запросом даст ожидаемый результат, наибольшее количество в штате.

Рабочий запрос будет:

SELECT state, MAX(PCount) AS HighestCount
FROM (
    SELECT state, products.product_name, COUNT(products.product_name) AS PCount
    FROM customers 
    INNER JOIN transactions ON customers.customer_id = transactions.customer_id
    INNER JOIN products ON transactions.product_id = products.product_id
    GROUP BY state, products.product_name
) Q
GROUP BY state
...