[SQL] 선택 TOP X (또는 아래) MySQL의 숫자 값에 대한 백분율
SQL선택 TOP X (또는 아래) MySQL의 숫자 값에 대한 백분율
숫자 값을 포함하는 열에서 TOP X (또는 하부) 비율을 선택의 MySQL에서 사용할 수있는 기능이 있는지 궁금 하였다.
기본적으로, 가격의 목록을 포함하는 열이 나는 단지 가격의 백분위 상단의 열에서 해당 필드를 반환합니다. 어떤 제안?
해결법
-
==============================
1.업데이트 : 훨씬 더 생각 아웃 피사체의 설명을 훨씬 더 여기에 사람을 알고부터. 그럼에도 불구하고, 여전히 계산 백분위에 MySQL은 전혀 임베디드 기능이있어 보인다.
업데이트 : 훨씬 더 생각 아웃 피사체의 설명을 훨씬 더 여기에 사람을 알고부터. 그럼에도 불구하고, 여전히 계산 백분위에 MySQL은 전혀 임베디드 기능이있어 보인다.
시험:
(가격 0.9 * 최대 (가격을 선택)) 가격이> = 가격 SELECT * FROM
SELECT price FROM prices p1 WHERE (SELECT count(*) FROM prices p2 WHERE p2.price >= p1.price) <= (SELECT 0.1 * count(*) FROM prices) );
이는 가격> = P1을 갖는 단가 테이블의 레코드 번호가 요금 테이블의 레코드의 총 개수의 10 것이다하는 가격 P1을 줄 것이다. 그 후 :
SELECT * FROM prices WHERE price >= (SELECT price FROM prices p1 WHERE (SELECT count(*) FROM prices p2 WHERE p2.price >= p1.price) <= (SELECT 0.1 * count(*) FROM prices) );
원하는 모든 레코드를 반환합니다.
참고 :이 쿼리의 성능을 검사하지 않았다, 나는 임시 테이블과 솔루션 / 변수가 더 효과적 생각합니다.
-
==============================
2.그냥 참고로 (내가이 질문은 오래된 몇 년 알고),이 작업을 수행 할 수있는 다른, 청소기 방법으로뿐만 아니라.
그냥 참고로 (내가이 질문은 오래된 몇 년 알고),이 작업을 수행 할 수있는 다른, 청소기 방법으로뿐만 아니라.
SELECT * FROM product_table WHERE price >= (SELECT price FROM product_table ORDER BY price DESC LIMIT 1 OFFSET (SELECT 0.1 * COUNT(*) FROM product_table));
나는 매우 큰 데이터베이스를 통해 유사한 쿼리를 실행하고 매우 빠르게 달렸다.
-
==============================
3.MySQL로 변환 SQL Server 쿼리에 응답
MySQL로 변환 SQL Server 쿼리에 응답
Select * from ( SELECT tbl.*, @counter := @counter +1 counter FROM (select @counter:=0) initvar, tbl ORDER BY ordcolumn ) X where counter <= (50/100 * @counter); ORDER BY ordcolumn
MySQL의 경우, 레코드의 수에 필요한 일괄 처리 크기 다음 LIMIT를 계산할 수
SELECT @rows := ROUND(COUNT(*) * 10/100) FROM table; PREPARE STMT FROM ‘SELECT * FROM tbl ORDER BY price LIMIT ?’; EXECUTE STMT USING @rows;
반대로 바닥 %를, 단지 순서
SELECT @rows := ROUND(COUNT(*) * 10/100) FROM table; PREPARE STMT FROM ‘SELECT * FROM tbl ORDER BY price DESC LIMIT ?’; EXECUTE STMT USING @rows;
아차, 어쩌면 DESC는 첫 번째 질의에 속하지만 당신은 의미를 얻는다.
노트 SQL Server의 경우 TOP N의 PERCENT 절은 확실히 도움이
select top 10 PERCENT * FROM TBL ORDER BY price
from https://stackoverflow.com/questions/4741239/select-top-x-or-bottom-percent-for-numeric-values-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의 모든 필드를 교체 (0) | 2020.05.15 |
---|---|
[SQL] MySQL을 TYPE을 CREATE (0) | 2020.05.15 |
[SQL] 와일드 카드 검색 성능 (%%)를 향상 MYSQL (0) | 2020.05.14 |
[SQL] 어떻게 MySQL의에서 자동 증가 필드와 동일한 테이블의 행과 삽입을 복사하려면? (0) | 2020.05.14 |
[SQL] SQL 서버에 연결하기 위해 PHP를 사용하는 방법 (0) | 2020.05.14 |