Oracle аналитический вопрос

Моя проблема была немного другой. Я все сделал правильно. Но я унаследовал неправильный класс для действия, в котором размещен фрагмент.

Для ясности, если вы переопределяете onCreateOptionsMenu(Menu menu, MenuInflater inflater) во фрагменте, убедитесь, что ваш класс активности, в котором размещен этот фрагмент, наследует android.support.v7.app.ActionBarActivity (на случай, если вы захотите поддерживать ниже уровня API 11).

Я унаследовал android.support.v4.app.FragmentActivity для поддержки уровня API ниже 11.

6
задан Josh Bush 23 June 2009 в 16:48
поделиться

3 ответа

Вот что я придумал:

SELECT zr, min_distance
  FROM (SELECT zr, min_distance, cnt, 
               row_number() over(PARTITION BY zr ORDER BY min_distance) rnk
           FROM (SELECT zr.zip zr, zipdistance(zr.zip, za.zip) min_distance,
                         COUNT(za.locations) over(
                             PARTITION BY zr.zip 
                             ORDER BY zipdistance(zr.zip, za.zip)
                         ) cnt
                    FROM zips_required zr
                   CROSS JOIN zips_available za)
          WHERE cnt >= :N)
 WHERE rnk = 1
  1. Для каждого zip_required вычислите расстояние до zip_available и отсортируйте их по расстоянию
  2. Для каждого zip_required счетчик с диапазоном позволяет узнать, сколько zip_availables находится в радиусе этого расстояния.
  3. фильтр (сначала COUNT (местоположения)> N)

Я использовал для создания примеров данных:

INSERT INTO zips_required
   SELECT to_char(10000 + 100 * ROWNUM) FROM dual CONNECT BY LEVEL <= 5;

INSERT INTO zips_available
   (SELECT to_number(zip) + 10 * r, 100 - 10 * r FROM zips_required, (SELECT ROWNUM r FROM dual CONNECT BY LEVEL <= 9));

CREATE OR REPLACE FUNCTION zipdistance(zipfrom VARCHAR2,zipto VARCHAR2) RETURN NUMBER IS
BEGIN
   RETURN abs(to_number(zipfrom) - to_number(zipto));
END zipdistance;
/

Примечание: вы использовали COUNT (местоположения) и SUM (местоположения) в своем вопросе, я предположил, что это COUNT (местоположения )

2
ответ дан 17 December 2019 в 07:08
поделиться

Справочная информация

Хотя в вашем вопросе кодировка установлена ​​как UTF-16, у вас нет правильного экранирования строки, поэтому я не был уверен, действительно ли вы правильно сделали переставьте строку в свой вопрос.

Я столкнулся с тем же исключением:

System.Xml.XmlException: данные в корневой уровень недействителен. Линия 1, позиция 1.

Однако мой код выглядел так:

string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<event>This is a Test</event>";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);

Проблема

Проблема в том, что строки хранятся внутри как UTF-16 в .NET, однако кодировка, указанная в заголовке XML-документа, может отличаться. Например:

<?xml version="1.0" encoding="utf-8"?>

Из документации MSDN для String здесь :

Каждый символ Unicode в строке определяется скалярным значением Unicode, также называется кодовой точкой Unicode или порядковое (числовое) значение Символ Юникода. Каждая кодовая точка закодировано с использованием кодировки UTF-16, а числовое значение каждого элемента кодировка представлена ​​символом Char объект.

Это означает, что когда вы передаете XmlDocument.LoadXml () свою строку с заголовком XML, она должна указывать кодировку UTF-16. В противном случае фактическая базовая кодировка не будет соответствовать кодировке, указанной в заголовке, и приведет к возникновению исключения XmlException.

Решение

Решение этой проблемы состоит в том, чтобы убедиться, что кодировка используется во всем, что вы передаете Метод Load или LoadXml соответствует тому, что вы говорите в заголовке XML. В моем примере выше либо измените заголовок XML на UTF-16, либо закодируйте ввод в UTF-8 и используйте один из методов XmlDocument.Load .

Ниже приведен пример кода, демонстрирующий, как используйте MemoryStream для создания XmlDocument с использованием строки, которая определяет XML-документ в кодировке UTF-8 (но, конечно, хранится строка UTF-16 .NET).

1
ответ дан 17 December 2019 в 07:08
поделиться

Я решил ту же проблему, создав подмножество ZIP-архивов в пределах квадратного радиуса от заданного zip (простая математика: <или> NSWE radius) , затем перебирая каждую запись в подмножестве, чтобы увидеть, находится ли она в пределах необходимого радиуса. Работал как шарм и работал очень быстро.

1
ответ дан 17 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: