相关疑难解决方法(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查询找到最重复的值

我有一个包含多行的表,对于每一行我都需要知道最常见的值.

例:

row_1有

car
boat
car
car
truck
truck
plane
car
car
Run Code Online (Sandbox Code Playgroud)

作为其价值观.

我需要知道什么是最常见的价值(在这种情况下是汽车).我有几个想法,但由于我必须为30行做这个,我想要一个简单而不是CPU密集的查询.

mysql

15
推荐指数
1
解决办法
1万
查看次数

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
查看次数