Oracle - Функции RANK() и DENSE_RANK() (Или учимся выбирать необходимые значения внутри множественной выборки)

Начнем с функции RANK(). С объяснения для чего она и в каких случаях она нам может пригодиться.

Функция RANK() — это очень полезная функция, она позволяет нам пронумеровать набор по некоторому группирующему значению внутри всего выбранного набора данных. Проще всего показать это на примере. Для этого создадим небольшую таблицу:
ID	PERSON	DT			SM

1	Роман	01.10.2016 11:51:31	545.3
2	Роман	01.10.2016 11:51:31	445.2
3	Роман	01.10.2016 11:51:31	145.3
4	Кирил	01.05.2016 16:51:31	99.5
5	Алена	01.07.2016 12:51:31	445.3
6	Роман	01.12.2016 16:51:31	876.1
7	Кирил	01.06.2016 16:51:31	237.22
8	Алена	01.12.2016 16:51:31	145.3
9	Алена	01.02.2016 14:51:31	534.7
10	Роман	01.03.2016 16:51:31	165.3
11	Кирил	01.04.2016 16:51:31	345.2


Пусть в этой таблице будет содержать некоторые выставленные счета разным пользователям PERSON на разные суммы SM в разное время DT.

Читать дальше →

ASP.NET MVC проект на .NET Core в VS Code. Часть 2 (Добавляем Представление)

В предыдущей публикации мы создали простейший ASP.NET MVC проект на .NET Core и добавили в него контроллер. Весь проект состоял из 4 файлов и содержал только самое необходимое. Теперь мы добавим в этот проект представления.
(Скачать исходник предыдущего проекта можно здесь: Sample001s.zip)

Приступим. Для начала добавим в наш проект каталог «View» (именно так принято именовать папку содержащую представления) в котором будут лежать все наши представления. Затем в каталоге «View» создадим подкаталог «SayHello» — в нем будут лежать представления для контроллера SayHello.

Читать дальше →

ASP.NET MVC проект на .NET Core в VS Code. Часть 1 (Создаем проект и Добавляем Контроллер)

В этой публикации я надеюсь начать цикл повествований по разработке ASP.NET MVC приложения на .NET Core без использования Visual Studio. Для разработки приложения я буду использовать VS Code (по сути навороченный текстовый редактор), и больше ничего.

Начну я с создания пустого проекта и последовательного добавления в проект Контроллера, Представления и Модели, с постепенным включением в проект необходимых библиотек.

Поскольку сам я это делаю впервые, то могу местами ошибаться или нести какую нибудь «чушь» :), поэтому заранее приношу извинения за возможно не «кошерный» код или некорректное описание чего либо. Обещать могу лишь одно, приведенные примеры гарантированно работоспособны.

Читать дальше →

Создаем первый Web сайт с ноля на .NET Core

1. Устанавливаем .NET Core.

2. Создаем новый проект .NET Core
mkdir Sample01
cd Sample01
dotnet new

После выполнения этих команд в папке Sample01 появится 2 файла: «Program.cs», «project.json».
Это и есть простейший шаблон приложения на .NET Core.

Читать дальше →

Устанавливаем .NET Core на Ubuntu Server 14.04 и запускаем сайт на ASP.NET Core

Сразу к делу.

Устанавливаем .NET Core на Ubuntu

Настраиваем доступ к репозиторию
sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update


Читать дальше →

Фотообзор терминала сбора данных Seuic 7P

28 фото
Seuic 7P - комплектность
image
В обзоре речь пойдет о бюджетном (Китайском — не только изготовленном в Китае, но и реально Китайской компанией) терминале сбора данных Seuic 7P, Китайской компании AutoID. С данным терминалом лично я уже знаком пару лет, накопилась некоторая информация по его поводу которой уже можно вполне обоснованно поделиться.

Показать все 28 фото →

Работа с Мягкими Чеками на на мобильном устройстве в ПО MC2-Retail

1. Вход в режим работы с мягкими чеками.


Для работы в режиме сбора мягких чеков, на терминале сбора данных в главном меню, которое представлено на изображении №1 необходимо выбрать пункт №7, если данный пункт не активен, то необходимо выбрать пункт №0 и авторизоваться как показано на изображении №2, если и после этих действий пункт меню №7 не активен, то необходимо обратиться к системному администратору.

Изображения №1 и №2
Главное меню MC2-Retal  Авторизация в MC2-Retail

Читать дальше →

Фото обзор терминала сбора данных Motorola MC9500

18 фото
MC9500 - Терминал сбора данных
image
Уже год прошел, с тех пор, как мне впервые в руки попал сей девайс. Решил поделиться некоторыми впечатлениями.
Скажу прямо плюсов, в сравнении с 90XX серией на мой персональный взгляд — нет.
  • Большой экран — Зачем он нужен, из за него только АКБ быстрее сядет.
  • У 90XX — механизм извлечения АКБ — просто гениальный! Зачем заменили его на это — непонятно.
  • Стоимость MC9500 — существенно выше чем MC90XX — «схожих» параметров.
  • Ремешок — хорошо сделали, удобно снимается и одевается.
  • Стилус стал менее комфортно вытаскиваться, нежели на MC90XX
  • Совершенно непонятно зачем на таких устройствах Windows Mobile 6. Устройству более чем достаточно Windows CE 6. (Возможно использование Mobile связано с наличием GPS — просто догадка)
  • Хлипенький Кредл (зарядно-коммуникационная подставка).

Мой вердикт таков: Если вам необходимо устройство с большим экраном, на котором помещается большое количество информации, то стоит рассматривать данный вариант. Но в большинстве случаев, для схожих задач рекомендую MC90XX, на мой взгляд гораздо более практичное устройство.

Пример создания временных таблиц на PL/SQL как в MSSQL

Для того, кто перешёл с MSSQL на Oracle, как например для меня, очень не привычно отсутствие такой удобной конструкции как:
select * into #tmp from table1

Где #tmp — временная таблица, с которой мы в рамках сессии можем далее обращаться как с обычной.
Однако в Oracle такая конструкция не работает. Мои попытки сходу найти какой либо аналог, успехом не увенчались. Однако свершилось чудо, и спустя некоторое время более опытный в этом вопросе коллега подсказал таки выход, который по сути реализует аналогичную вещь как и в MSSQL.

И так, вот как оказывается можно:
with

--Задаем временные таблицы
t_view1 as (select * from table1 where id = 1),

t_view2 as (select * from table2 where id = 1)

--Производим действия с использованием временных таблиц
select * from table3 t where
exists (select * from t_view1 v where v.id = t.id)
and exists (select * from t_view2 v where v.id = t.id)


И всё!..
(Кусочек кода не большой и думаю понятен, без излишнего разъяснения).

Datalogic CarMan Scan

5 фото
Datalogic CarMan Scan
image
Сегодня в сервисе видел удивительный девайс, терминал сбора данных для диагностики автомобиля. Удивило ещё и то что на девайсе красовалась надпись DATALOGIC!!! Даже на оф. Сайте ДатаЛоджика ничего нет о нем, хотя если покопать по сети — можно найти информацию. Как то совсем они его по тихому производят. :)