반응형
반응형

Realmβ

Realm (렘) 은 모바일 데이터베이스 입니다: SQLite, OrmLite, greenDAO 또는 Core Data를 대체하여 사용하실 수 있습니다. 
Realm을 사용해서 더 빨리 개발하고 더 빨리 동작하는 최고의 앱을 만들 수 있습니다.



Realm


https://github.com/realm




반응형
반응형

 

 

분석용 함수

 

RANK - 해당값에 대한 우선순위를 결정 (중복 우선순위 허용)

 

DENSE_RANK - 해당값에 대한 우선순위를 결정 (중복 우선순위 허용 안함)

 

ROW_NUMBER - 조건을 만족하는 모든 행의 번호를 제공

 

CUME_DIST - 분산값

 

PERCENT_RANK - 백분율

 

NTILE(n) - 전체 데이터 분포를 n-Buckets으로 나누어 표시

 

FIRST_VALUE - 정렬된 값중에서 첫번째 값을 반환.

 

LAST_VALUE - 정렬된 값중에서 마지막 값을 반환.

 

 

OVER() 에 사용되는 OPTION

 

1. PARTITION BY
2. ORDER BY DESC
3. NULLS FIRST : NULL 데이터를 먼저 출력.
4. NULLS LAST : NULL 데이터를 나중에 출력.


 

반응형

'프로그래밍 > DataBase' 카테고리의 다른 글

[MSSQL] SET IDENTITY_INSERT(Transact-SQL)  (0) 2014.11.24
Realmβ - 모바일DB 렘  (0) 2014.09.30
[MSSQL] IDENT_CURRENT(Transact-SQL)  (0) 2014.04.07
[ORACLE] 달력만들기  (0) 2014.04.01
[DB] transaction, commit, rollback  (0) 2014.02.12
반응형

IDENT_CURRENT(Transact-SQL)

 

지정된 테이블 또는 뷰에 대해 생성된 마지막 ID 값을 반환합니다. 생성된 마지막 ID 값은 임의의 세션 및 범위에 대한 값일 수 있습니다.

 

 

* Link : http://technet.microsoft.com/ko-kr/library/ms175098.aspx - IDENT_CURRENT

           http://technet.microsoft.com/ko-kr/library/ms187342.aspx - @@IDENTITY

 

 

IDENT_CURRENT는 SQL Server 2000 IDENTITY 함수 SCOPE_IDENTITY 및 @@IDENTITY와 유사합니다. 이 세 함수는 모두 최근에 생성된 ID 값을 반환합니다. 그러나 각 함수에서 최근이 정의하는 범위와 세션은 각기 다릅니다.


IDENT_CURRENT는 임의의 세션과 범위에 있는 특정 테이블에 대해 최근 생성된 ID 값을 반환합니다.


@@IDENTITY는 현재 세션의 전체 범위에 걸쳐 임의의 테이블에 대해 최근 생성된 ID 값을 반환합니다.


SCOPE_IDENTITY는 현재 세션 및 현재 범위에 있는 임의의 테이블에 대해 최근 생성된 ID 값을 반환합니다.


IDENT_CURRENT 값이 NULL인 경우(테이블에 행이 포함된 적이 없거나 테이블이 잘린 경우) IDENT_CURRENT 함수는 초기값을 반환합니다.


문 및 트랜잭션이 실패하면 테이블의 현재 ID가 변경되고 ID 열 값 간에 간격이 생성될 수 있습니다. 테이블에 값을 삽입하려고 시도한 트랜잭션이 커밋되지 않아도 ID 값은 롤백되지 않습니다. 예를 들어 IGNORE_DUP_KEY 위반으로 인해 INSERT 문이 실패하더라도 테이블의 현재 ID 값은 여전히 증가합니다.


IDENT_CURRENT를 사용하여 다음에 생성되는 ID 값을 예측할 때 유의합니다. 다른 세션에서 삽입 작업을 수행하므로 실제로 생성된 값은 IDENT_CURRENT에 IDENT_INCR을 더한 값과 다를 수 있습니다.

 

 

USE AdventureWorks2012;
GO
IF OBJECT_ID(N't6', N'U') IS NOT NULL 
    DROP TABLE t6;
GO
IF OBJECT_ID(N't7', N'U') IS NOT NULL 
    DROP TABLE t7;
GO
CREATE TABLE t6(id int IDENTITY);
CREATE TABLE t7(id int IDENTITY(100,1));
GO
CREATE TRIGGER t6ins ON t6 FOR INSERT 
AS
BEGIN
   INSERT t7 DEFAULT VALUES
END;
GO
--End of trigger definition

SELECT id FROM t6;
--IDs empty.

SELECT id FROM t7;
--ID is empty.

--Do the following in Session 1
INSERT t6 DEFAULT VALUES;
SELECT @@IDENTITY;
/*Returns the value 100. This was inserted by the trigger.*/

SELECT SCOPE_IDENTITY();
/* Returns the value 1. This was inserted by the 
INSERT statement two statements before this query.*/

SELECT IDENT_CURRENT('t7');
/* Returns value inserted into t7, that is in the trigger.*/

SELECT IDENT_CURRENT('t6');
/* Returns value inserted into t6. This was the INSERT statement four statements before this query.*/

-- Do the following in Session 2.
SELECT @@IDENTITY;
/* Returns NULL because there has been no INSERT action 
up to this point in this session.*/

SELECT SCOPE_IDENTITY();
/* Returns NULL because there has been no INSERT action 
up to this point in this scope in this session.*/

SELECT IDENT_CURRENT('t7');
/* Returns the last value inserted into t7.*/

 

 

 


 

반응형
반응형

오라클 달력 만들기

 

-- 달력 만들기

/*  -- ORACLE

    SELECT 일,월,화,수,목,금,토
      FROM (  SELECT TRUNC  (dt + LEVEL - 1, 'd' ) w
                   , TO_CHAR(dt + LEVEL - 1, 'd' ) d
                   , TO_CHAR(dt + LEVEL - 1, 'dd') dd
                FROM (SELECT TO_DATE('201402','yyyymm') DT FROM DUAL)
             CONNECT BY LEVEL <= LAST_DAY(dt) - dt + 1
           )
     PIVOT (MIN(DD) FOR d IN ( 1 일, 2 월, 3 화, 4 수, 5 목, 6 금, 7 토))
     ORDER BY w
*/

반응형
반응형

 

 

 

BEGIN TRANSACTION CandidateDelete
    WITH MARK N'Deleting a Job Candidate';
GO
USE AdventureWorks2012;
GO
DELETE FROM AdventureWorks2012.HumanResources.JobCandidate
    WHERE JobCandidateID = 13;
GO
COMMIT TRANSACTION CandidateDelete;
GO

 

 

 

 

BEGIN TRAN @TransactionName
       INSERT INTO ValueTable VALUES(1), (2);
ROLLBACK TRAN @TransactionName;

반응형
반응형

COMPUTE BY 절을 이용하면 하나의 SELECT 문으로 세부 행과 요약 행을 모두 볼 수 있습니다. 또한 하위 그룹에 대한 요약 값을 계산하거나 전체 결과 집합의 요약 값을 계산할 수 있습니다.

COMPUTE 절에는 다음 정보를 지정해야 합니다.

  • 선택적 BY 키워드. 열 기준당 지정된 행 집계를 계산합니다.

  • 행 집계 함수 이름. SUM, AVG, MIN, MAX 또는 COUNT가 포함됩니다.

  • 행 집계 함수를 실행할 열

COMPUTE로 생성된 요약 값은 쿼리 결과에서 별도의 결과 집합으로 나타납니다. COMPUTE 절이 포함된 쿼리의 결과는 사용자가 지정한 그룹이나 구분에 따라 요약 값을 제어하는 CONTROL-BREAK 보고서와 비슷합니다. 그룹별 요약 값을 계산하고 같은 그룹에 대한 집계 함수를 두 개 이상 계산할 수도 있습니다.

선택적 BY 절과 함께 COMPUTE를 지정하면 각 그룹별로 SELECT의 조건을 충족하는 두 개의 결과 집합이 생성됩니다.

  • 각 그룹의 첫 번째 결과 집합은 해당 그룹의 SELECT 목록 정보가 포함된 세부 행 집합입니다.

  • 각 그룹의 두 번째 결과 집합은 해당 그룹의 COMPUTE 절에 지정된 집계 함수의 부분합이 지정된 한 행입니다.

선택적 BY 절 없이 COMPUTE를 지정해도 SELECT의 조건을 충족하는 두 개의 결과 집합이 생성됩니다.

  • 각 그룹의 첫 번째 결과 집합은 SELECT 목록 정보가 포함된 모든 세부 행입니다.

  • 두 번째 결과 집합은 COMPUTE 절에 지정된 집계 함수의 합계가 포함된 한 행입니다.

다음은 간단한 COMPUTE 절을 사용하여 SalesOrderDetail 테이블에서 단가와 할인액의 총계를 반환하는 SELECT 문입니다.

USE AdventureWorks2008R2;
GO
SELECT SalesOrderID, UnitPrice, UnitPriceDiscount
FROM Sales.SalesOrderDetail
ORDER BY SalesOrderID
COMPUTE SUM(UnitPrice), SUM(UnitPriceDiscount);

 

다음은 선택적 BY 키워드를 COMPUTE 절에 추가하여 각 판매 주문의 부분합을 반환하는 쿼리입니다.

USE AdventureWorks2008R2;
GO
SELECT SalesOrderID, UnitPrice, UnitPriceDiscount
FROM Sales.SalesOrderDetail
ORDER BY SalesOrderID
COMPUTE SUM(UnitPrice), SUM(UnitPriceDiscount) BY SalesOrderID;

SELECT 문은 각 판매 주문에 대해 두 개의 결과 집합을 반환합니다. 각 판매 주문의 첫 번째 결과 집합은 SELECT 목록에서 지정한 정보가 포함된 행 집합이고 두 번째 결과 집합은 COMPUTE 절에 지정된 두 가지 SUM 함수의 부분합입니다.

참고참고

osql과 같은 유틸리티는 각 부분합이 결과 집합에서 별도의 행으로 보이도록 여러 개의 부분합이나 합계 요약을 표시합니다. 이것은 유틸리티에서 결과를 표시하는 방식 때문이며 부분합이나 합계는 한 행에 반환됩니다. SQL Server Management Studio와 같은 응용 프로그램에서는 여러 종류의 집계를 같은 줄에 표시합니다.

 

 

COMPUTE와 GROUP BY의 차이를 요약하면 다음과 같습니다.

  • GROUP BY는 단일 결과 집합을 반환합니다. 각 그룹별로 그룹화 열과 해당 그룹의 하위 집계를 보여 주는 집계 함수가 포함된 하나의 행이 있습니다. SELECT 목록에는 그룹화 열과 집계 함수만 포함될 수 있습니다.

  • COMPUTE는 여러 결과 집합을 반환합니다. 각 그룹별로 SELECT 목록의 식이 있는 세부 행이 포함된 결과 집합과 그룹의 하위 집계나 SELECT 문의 합계가 포함된 결과 집합이 있습니다. SELECT 목록에는 그룹화 열이나 집계 함수가 아닌 식이 포함될 수 있으며 집계 함수는 SELECT 목록이 아니라 COMPUTE 절에 지정됩니다.

다음은 GROUP BY와 집계 함수를 사용하는 쿼리입니다. 이 쿼리는 각 그룹별로 해당 그룹의 부분합이 포함된 행이 있는 단일 결과 집합을 반환합니다.

USE AdventureWorks2008R2;
GO
SELECT SalesOrderID, SUM(UnitPrice), SUM(UnitPriceDiscount)
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID;
참고참고

COMPUTE나 COMPUTE BY 절에는 ntext, text 또는 image 데이터 형식을 포함할 수 없습니다.

 

반응형

+ Recent posts