SQL Получить количество каждого элемента в SQL-запросе

у меня есть эта таблица

гг>
Я БЫИдентификатор телефонаИмя телефонаАктивныйСтатус
11а11
21б02
32с11
4211
52е03
63ф11
73грамм11
83час11
94я04
104Дж11

И хотел бы сделать запрос, который дает этот результат, как показано ниже. Я хочу получить все строки, где Статус = 1. Я также хочу подсчитать общее количество PhoneID и сделать его столбцом с именем Количество в запросе.

гг>
Я БЫИдентификатор телефонаИмя телефонаАктивныйСтатусКоличество
11а112
32с113
42113
63ф113
73грамм113
83час113
104Дж112

До сих пор я пробовал запрос, но он не отображает правильный результат.

SELECT ID, PhoneID, PhoneName, Active, Status, (SELECT Count(PhoneID) FROM Phones)
FROM Phones
WHERE Status = 1

Это была просто опечатка.

Young A 03.05.2022 21:22
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
1
51
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

SELECT Count(PhoneID) FROM Phones не имеет предложения WHERE, чтобы ограничить его статусом, который вы хотите.

Вам действительно нужен ответ, чтобы решить проблему, а не просто указать, что не так, то есть, как это делают другие ответы на этот вопрос.

Dale K 02.05.2022 23:55

Вам нужно коррелировать ваш подзапрос, попробуйте:

SELECT ID, PhoneID, PhoneName, Active, Status,
  (SELECT Count(*) FROM Phones p2 WHERE p2.PhoneId = p.PhoneId) Quantity
FROM Phones p
WHERE Status = 1;
Ответ принят как подходящий

Вы можете сделать это с помощью подзапроса, который возвращает количество каждого PhoneID:

SELECT t.ID, t.PhoneID, t.PhoneName, t.Active, t.Status, q.[Quantity]
FROM Phones as t
inner join
(
   select PhoneID, COUNT(PhoneID) as [Quantity]
   from Phones
   group by PhoneID
) as q
on q.[PhoneID] = t.[PhoneID]
WHERE t.Status = 1

Другие вопросы по теме