mysql - 用于识别重复项的 SQL 查询

标签 mysql sql

我正在尝试编写一个查询,它将数据库中同一 IP 地址的展示次数和转化次数配对。我有一个展示次数及其 IP 地址表,展示次数可以是“浏览”或“转化”类型(在“名称”列中定义)。

基本上,我需要识别具有相同 IP 地址的记录组,其中包含 View 和转换。

经过一个小时的谷歌搜索后,我已经得到了下面的内容,虽然不是很远,但应该可以让您了解所涉及的对象:

SELECT ip_address, name, COUNT(1) as CNT 
FROM Impressions
GROUP BY ip_address, name;

有人可以建议最好的方法吗?

最佳答案

您需要将 HAVING 子句与条件计数结合使用。您还需要从 GROUP BY 中删除 name,因为这将分别处理您的两种不同类型。

SELECT  ip_address, 
        COUNT(CASE WHEN Name = 'View' THEN 1 END) AS Views,
        COUNT(CASE WHEN Name = 'Conversion' THEN 1 END) AS Conversions,
        COUNT(1) as CNT 
FROM    Impressions
GROUP BY ip_address
HAVING  COUNT(CASE WHEN Name = 'View' THEN 1 END) > 0
AND     COUNT(CASE WHEN Name = 'Conversion' THEN 1 END) > 0;

关于mysql - 用于识别重复项的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181252/

相关文章:

c# - 在 Entity Framework 中动态选择数据库

php - MySQL PDO WHERE 语句中的 NULL

mysql - WordPress WP-Dbmanager 0/1 查询已成功执行

mysql - 有人试过使用 MySQL DataController 与 MSSQL Server 建立联合表吗?

mysql - 在 OS X 10.10.3 上找不到/etc/hostconfig 文件

php - 丢弃数组元素并对剩余元素求和

mysql - 根据MySQL中不同表中某些列的值匹配两列

php - MySQL查询顺序按“最完整的字段”

mysql - 带有 MySQL 的 Entity Framework 6 - 类库

asp.net - 如何修复 System.Data.SqlClient.SqlException : Timeout expired