итерационный счет - PullRequest
       5

итерационный счет

0 голосов
/ 27 февраля 2020

У меня есть таблица людей, которая содержит уникальный идентификатор для каждого человека. Другая таблица также содержит их уникальный идентификатор и количество покупок в каком-либо магазине. Как подсчитать количество покупок, которое у них есть?

SELECT 
    PERSON.ID, 
    PERSON.NAME, 
    (SELECT COUNT(*) WHERE PERSON.ID = PURCHASE.PERSON_ID) AS 'Total Purchases'
FROM PERSON_TABLE AS PERSON, PURCHASE_TABLE AS PURCHASE

В этом примере текущая команда просто подсчитывает общее количество покупок. Как мне рассчитывать на человека?

1 Ответ

1 голос
/ 27 февраля 2020

Вы можете просто использовать агрегацию:

select pe.id, pe.name, count(pu.person_id) total_purchases
from person_table pe
left join purchase_table pu on pu.person_id = p.id
group by pe.id, pe.name

Это дает вам количество записей в purchase_table для каждой строки в person_table; left join предназначен для лиц, у которых вообще нет покупки, и в этом случае count(pu.person_id) даст 0.

...