#sql #sqlite
#sql #sqlite
Вопрос:
Хе,
У меня есть таблица AddClient, в которой есть такие данные
idClient NameClient Balance Date
CL-MK Muhammad Kashif CL-MK 9000 2016-10-01
CL-MA Asim CL-MA 8000 2016-10-01
CL-MQ Qasim CL-MQ 7000 2016-10-01
CL-MS Saim CL-MS 1000 2016-10-01
CL-MF Fahad CL-MF 3000 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MA Asim CL-MA 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MK Muhammad Kashif CL-MK 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
CL-MS Saim CL-MS 2016-10-01
CL-MK Muhammad Kashif CL-MK 409005 2016-10-01
CL-MK Muhammad Kashif CL-MK 400000 2016-10-01
CL-MA Asim CL-MA 566340 2016-10-01
CL-MA Asim CL-MA 560000 2016-10-01
CL-MS Saim CL-MS 401005 2016-10-01
CL-MS Saim CL-MS 400000 2016-10-01
CL-MF Fahad CL-MF 2016-10-01
CL-MQ Qasim CL-MQ 2016-10-01
В столбце Баланс пустое место равно нулю
Я пытаюсь выполнить этот запрос, чтобы получить минимальный баланс каждого клиента
SELECT idClient,NameClient,min(Balance) from AddClient group by NameClient
Но результат отображается следующим образом
CL-MA Asim CL-MA 560000
CL-MF Fahad CL-MF 3000
CL-MK Muhammad Kashif CL-MK 400000
CL-MQ Qasim CL-MQ 7000
CL-MS Saim CL-MS 1000
в имени клиента Asim и Kashif не отображаются правильные результаты
, минимальный баланс Asim равен 8000
и Kashif равен 9000
где ошибка?
Комментарии:
1. @dotnetom по ошибке его NameClient
2. Можете ли вы показать инструкцию CREATE? Какой тип данных у вашего
Balance
столбца?
Ответ №1:
Вам нужно группировать как по идентификатору, так и по имени клиента, а не группировать только по имени:
SELECT idClient, NameClient, min(Balance)
FROM AddClient
GROUP BY idClient, NameClient
Кроме того, кажется, что тип данных, который вы используете для баланса, не является числовым типом — это объясняет странные результаты, которые вы видите. Если тип данных не числовой, вы должны сначала преобразовать его в числовой тип. Приведенный ниже код предполагает, что все значения в Balance
столбце могут быть преобразованы в целочисленные значения, в противном случае вы получите исключение:
SELECT idClient, NameClient, min(CAST(Balance as INTEGER))
FROM AddClient
GROUP BY idClient, NameClient
Комментарии:
1. @jon Какой тип данных
Balance
? У меня такое чувство, что это не число, не так ли?2. @jon Я добавил альтернативное решение в случае
Balance
, если это не числовой тип3. вы правы, баланс — это VARCHAR, теперь я использую это с ЦЕЛЫМ числом, которое работает. Спасибо вам оооооочень много, вы гениальны… Еще раз спасибо.