MySQL中的计数用例
我有一个类似于此的表(mytable):MySQL中的计数用例,mysql,count,sum,case,Mysql,Count,Sum,Case,我有一个类似于此的表(mytable): Names ----- John Harry James Harry John James Harry Billy 我想计算每个名字出现的次数 我想将每个计数乘以一个数字,这取决于出现的次数。如果一个名字出现一次,乘以2,如果它出现两次,乘以3等等 然后我想将所有这些输出值相加 这将是我想要的输出: Names | numbers_count | multiplied ---------------------------- John
Names
-----
John
Harry
James
Harry
John
James
Harry
Billy
Names | numbers_count | multiplied
----------------------------
John | 2 | 6
Harry | 3 | 12
James | 2 | 6
Billy | 1 | 2
SUM = 26
到目前为止,我有这个,我想我需要使用CASE函数,然后大概是SUM函数,但我失败得很惨!我也尝试过使用局部变量,但没有用
SELECT
Names,
COUNT(Names) AS number_count
FROM mytable
GROUP BY Names
例如,可以在分层定价模型中使用该方法
编辑:非常感谢你的回答胡安·卡洛斯·奥罗佩扎,你是对的。然而,我本应该更好地提出这个问题。我正在处理的真正问题需要一个系统,如:
IF (1 <= numbers_count <= 3) multiplied=(numbers_count*2)
IF (4 <=numbers_count <= 6) multiplied=((3*2)+((numbers_count-3)*3))
IF(1)
对于总和,您需要另一个查询
SELECT SUM(multiplied)
FROM (
SELECT
Names,
COUNT(Names) AS number_count,
COUNT(Names) * (COUNT(Names) + 1) AS multiplied
FROM mytable
GROUP BY Names
) T
选择
*,
将(姓名)计数为N的计数,
案例计数(姓名)非常感谢您的快速回答,真是太好了,您是对的。但是,我应该提出更好的问题。我正在研究的真正问题需要一个类似于:IF(1)的系统
SELECT SUM(multiplied)
FROM (
SELECT
Names,
COUNT(Names) AS number_count,
COUNT(Names) * (COUNT(Names) + 1) AS multiplied
FROM mytable
GROUP BY Names
) T
SELECT
*,
COUNT(Names) AS COUNT_OF_N,
CASE WHEN COUNT(Names) <= 3
THEN COUNT(Names) * 2
WHEN COUNT(Names) <= 6
THEN COUNT(Names) * 3
END AS Multiplied
FROM
mytable
GROUP BY
Names