2010-07-08 2 views
0

예를 들어, 가장 인구가 많은 10 개 제품을 테이블에 어떻게 표시 할 수 있습니까?테이블에 가장 인구가 많은 제품을 표시 하시겠습니까?

20 개의 맥주, 10 개의 나초, 5 개의 땅콩, 2 개의 핫도그 및 4 개의 아침 식사 판매가 포함 된 판매 테이블이 있습니다.

어느 것이 가장 인기가 있는지 자동으로 계산하여 내림차순으로 표시하는 방법이 있습니까?

편집 :

TABLENAME 다음과 같이 내 테이블 인 : 판매

분야 :

  • 제품 (VARCHAR)
  • 양 (INT)
  • 비용 (십진수)
  • saledate (date)

수량 필드 때문에 하나의 판매 기록이 하나 이상의 제품 판매로 계산 될 수 있습니다.

필드 이름과 국가 만있는 손님 테이블도 있는데 테이블에 가장 많이 인구가 많은 상위 5 개 국가를 표시하려고합니다.

+2

, 항상 바람직 샘플 데이터로, 질문과 관련이 같은 테이블 스키마의 정도를 게시하는 것이 좋습니다. –

답변

2

당신을 위해이 일을 하는가, 그렇지 않으면

SELECT TOP 10 f.Name, f.Sales 
FROM Food f 
ORDER BY f.Sales DESC 

:

그래서,이 같은 (당신이 이미 저장된 카운트를 가정)?
select * 
from(
    select count(productID) AS productCount, productName 
    from products 
    group by productID) Q 
order by Q.productCount desc; 

(이것은 당신의 테이블이 이미 카운트를 저장하는 경우 명확하지 않았다, 그러나 그것은 일반적인 아니에요 그래서, 당신은하지 않았다 가정) 내부 쿼리의 제품을 계산 외부 query.This에 주문을 한 후 그들과 또한 제품에 productID 필드가 있다고 가정합니다.

UPDATE

테이블이 실제로 판매 수를 추적하는 경우에 당신이 뭔가를 할 수 있습니다 :

select * 
from(
    select sum(quantity) AS productCount, productName 
    from sales 
    group by productID) Q 
order by Q.productCount desc; 

매우 이전과 비슷하지만 여러 판매에서 판매 된 제품의 합을 취하고있다 상품 수보다는 오히려

+0

SUM (수량)을 원하지 않는다고 생각합니다 (제품 ID) –

+0

@Tom H .: 정확합니다! – FrustratedWithFormsDesigner

0

옙; 데이터베이스 구조를 알지 못하면 SUM 또는 COUNT 집계를 사용하여 유사한 항목을 그룹화 한 다음 ORDERBY 절에서 집계의 내림 값으로 정렬 할 수 있습니다.

0

항목을 판매 한 횟수가있는 열이있는 경우 SELECT TOP 10ORDER BY NumSales 수 있습니다. 그렇지 않다면 먼저 열의 수를 계산해야합니다.

SELECT TOP 10 COUNT(f.Name) as [Count], f.Name 
FROM Food f 
GROUP BY f.Name 
ORDER BY [Count] 
+0

'TOP'은 SQL Server에 고유합니다. 질문은 MySQL을위한 것입니다 ... –

+0

Heh. 나는 타이핑을 시작할 때 sql 태그를 보았다. 나는 mysql 태그를 놓친 것 같다. –

0

SELECT [...] 판매 주문 DESC;

0

관련 테이블, 관련 방법 및 "인구가 많은"제품의 기준을 파악한 후에는 쿼리를 제공하는 것이 더 쉬울 것입니다.

  • 사용을 ...

    1. 당신은 하강의 인구 가중치를 결정 무엇에 의해 주문하는 데 필요한 첫 번째/상위 10 개 기록을 얻을 수있는 LIMIT 구문 : LIMIT 10
    을하지만 문제의 핵심이 있다는 것입니다

    IE : 데이터베이스 질문을 할 때

    SELECT ... 
        FROM YOUR_TABLE 
    ORDER BY quantity DESC 
        LIMIT 10 
    
  • 관련 문제