Пожалуйста, помогите мне найти ошибку в запросе

#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, теперь я использую это с ЦЕЛЫМ числом, которое работает. Спасибо вам оооооочень много, вы гениальны… Еще раз спасибо.