相关疑难解决方法(0)

获取SQL中另一列的每个值的最常见值

我有这样一张桌子:

 Column  | Type | Modifiers 
---------+------+-----------
 country | text | 
 food_id | int  | 
 eaten   | date | 
Run Code Online (Sandbox Code Playgroud)

对于每个国家,我想获得最常吃的食物.我能想到的最好的(我使用的是postgres)是:

CREATE TEMP TABLE counts AS 
   SELECT country, food_id, count(*) as count FROM munch GROUP BY country, food_id;

CREATE TEMP TABLE max_counts AS 
   SELECT country, max(count) as max_count FROM counts GROUP BY country;

SELECT country, max(food_id) FROM counts 
   WHERE (country, count) IN (SELECT * from max_counts) GROUP BY country;
Run Code Online (Sandbox Code Playgroud)

在最后一个陈述中,需要GROUP BY和max()来打破关系,其中两种不同的食物具有相同的数量.

对于概念上简单的事情来说,这似乎是很多工作.有没有更直接的方式来做到这一点?

sql postgresql greatest-n-per-group

24
推荐指数
5
解决办法
4万
查看次数

MySQL选择最频繁的组

如何获取MySQL中每个标记最常出现的类别?理想情况下,我想模拟一个计算列模式的聚合函数.

SELECT 
  t.tag 
  , s.category 
FROM tags t 
LEFT JOIN stuff s 
USING (id) 
ORDER BY tag;

+------------------+----------+
| tag              | category |
+------------------+----------+
| automotive       |        8 |
| ba               |        8 |
| bamboo           |        8 |
| bamboo           |        8 |
| bamboo           |        8 |
| bamboo           |        8 |
| bamboo           |        8 |
| bamboo           |       10 |
| bamboo           |        8 |
| bamboo           |        9 |
| bamboo           |        8 …
Run Code Online (Sandbox Code Playgroud)

mysql group-by frequency greatest-n-per-group

9
推荐指数
1
解决办法
5105
查看次数

SQL Server - 获取TOP 1产品的总计数

我需要能够找到客户下达的订单总数,还可以在一个查询中找到最佳产品.例如,在以下结构中,

CREATE TABLE #Cust (CustId INT, CustName VARCHAR(50))
CREATE TABLE #Product (ProductId INT, ProductName VARCHAR(10) )
CREATE TABLE #Orders (CustId INT, ProductId INT, OrderTaken BIT)

INSERT #Cust
        ( CustId, CustName )
VALUES  ( 1, 'Paul' ),
        ( 2, 'F' ),
        ( 3, 'Francis' )

INSERT #Product
        ( ProductId, ProductName )
VALUES  ( 1, 'Table' ),
        ( 2, 'Chair' )

INSERT #Orders
        ( CustId, ProductId, OrderTaken )
VALUES  ( 1, 1, 1 ),
        ( 1, 1, 1 ),
        ( 1, 2, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

7
推荐指数
1
解决办法
280
查看次数