Почему SUM (mycolumn) отображает десятичную точку? - PullRequest
0 голосов
/ 05 октября 2019

В базе данных SQLite я создал таблицу и импортировал в нее данные CSV.

Последний столбец содержит только целые числа:

ZIP;AMOUNT
78123;4272
95456;154
etc.

Я использовал следующие команды:

.mode csv
.separator ';'
CREATE TABLE MyTable("ZIP" TEXT,  "AMOUNT" INTEGER);
.import input.csv MyTable
sqlite> select SUM(AMOUNT) from MyTable;
25270.0

Почему SQLite отображает SUM с десятичной дробью?

Спасибо.

===

Редактировать: Вот информация:

sqlite> select typeof(AMOUNT) from MyTable LIMIT 10;
text
integer
integer
integer
integer
etc.

sqlite> select typeof(SUM(AMOUNT)) from MyTable;
real

==

Редактировать: вот верхняя часть input.csv, экспортированная из LibreOffice Calc:

ZIP;AMOUNT
78123;4272
95456;154
etc.

Возможно, я не использовал нужные команды для импорта данных в SQLite.

1 Ответ

0 голосов
/ 05 октября 2019

@ PetSerAl есть. Поскольку вы импортируете в существующую таблицу, импортируется каждая строка, включая заголовок. Эта строка заставляет sum() возвращать результат с плавающей запятой.

Я обхожу этот случай с помощью:

.import '| tail -n +2 input.csv' mytable

, которая удаляет первую строку.

Если первый символ имени файла - |, он обрабатывается как команда оболочки для запуска (с использованием функции C popen()), а его вывод используется в качестве данных для импорта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...